PDFBox incapaz de generar imágenes de un archivo PDF páginas

jefe:

He estado usando PDFBox a dividir archivos PDF en imágenes desde hace un tiempo, pero después de la actualización a 2.0.19 he empezado a correr en excepciones inesperadas.

Este es el seguimiento de la pila de la excepción:

java.lang.ArrayIndexOutOfBoundsException: 3
    at java.awt.color.ICC_ColorSpace.toRGB(ICC_ColorSpace.java:191)
    at org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.toRGB(PDICCBased.java:350)
    at org.apache.pdfbox.rendering.PageDrawer.getPaint(PageDrawer.java:335)
    at org.apache.pdfbox.rendering.PageDrawer.getNonStrokingPaint(PageDrawer.java:708)
    at org.apache.pdfbox.rendering.PageDrawer.fillPath(PageDrawer.java:808)
    at org.apache.pdfbox.contentstream.operator.graphics.FillEvenOddRule.process(FillEvenOddRule.java:37)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:875)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:509)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:483)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:156)
    at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:269)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:321)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:243)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:203)
    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:190)

Aquí está el código que he utilizado para dividir el archivo:


try (PDDocument document = PDDocument.load(new File("updated_test.pdf"))) {
    PDPageTree pdPages = document.getDocumentCatalog().getPages();
    PDFRenderer pdfRenderer = new PDFRenderer(document);

    int page = 0;
    for (PDPage pdPage : pdPages) {
        String fileName = "demo" + page + ".png";

        File tempImg = new File(fileName);

        BufferedImage bim = pdfRenderer.renderImage(page);
        ImageIOUtil.writeImage(bim, tempImg.getAbsolutePath(), 150);

        page++;
    }
} catch (Exception e) {
    e.printStackTrace();
}

Y aquí está el archivo real que produce el problema: https://stackoverflowuploads.s3-us-west-2.amazonaws.com/updated_test.pdf

Todo tipo de ayuda, ideas y consejos sería muy apreciado, si tienes ideas sobre otras soluciones / bibliotecas que pueden lograr los mismos resultados los que sería muy útil también. ¡Gracias!

Tilman Hausherr:

Esto se ha corregido en PDFBox-4801 y una acumulación instantánea está disponible aquí en la parte inferior.

Será en 2.0.20, que es probable que sea lanzado en el verano (con suerte).

La causa es un valor incorrecto / N (3) en el diccionario de un perfil CMYK ICC. El valor correcto debería haber sido 4. El resultado es la excepción que se menciona más adelante. Los código corregido comprueba el perfil ICC y corrige el valor del objeto PCICCBased.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=339287&siteId=1
Recomendado
Clasificación