2016-06-09 6 views
0

Es war möglich, Bilder einschließlich TIFF-Format mit PDFBox v1.x zu extrahieren. Es ist immer noch möglich, einige Formate mit Version 2.0.1 zu extrahieren, aber es scheint nicht für das TIFF-Format zu funktionieren.TIFF aus PDF extrahieren mit PDFBox v2

for (COSName c : page.getResources().getXObjectNames()) { 
    PDXObject o = resources.getXObject(c); 
    if (o instanceof PDImageXObject) { 
     PDImageXObject image = (PDImageXObject) o; 
     try (ByteArrayOutputStream bout = new ByteArrayOutputStream()) { 
      ImageIO.write(image.getImage(), image.getSuffix(), bout); 
      System.out.println("Image Bytes: " + bout.size()); 
     } 
    } 
} 

ByteArrayOutputStream in obigen Code hat Bytes für PNG und JPEG aber nichts für TIFF. Irgendwelche Vorschläge?

Danke.

+2

Das erste, was mir in den Sinn kommt, ist die Frage: Ist TIFF ImageIO Unterstützung? Versuchen Sie, image.getSuffix() durch "png" zu ersetzen, so dass es versucht wird, es als PNG zu speichern. Wenn es dann funktioniert, unterstützt Ihr ImageIO nur das Schreiben von TIFF-Dateien nicht. – user254948

+4

"aber es scheint nicht zu funktionieren" ist nicht sehr spezifisch. 'image.getSuffix()' gibt "tiff" zurück, wenn das Bild in einem ccitt-Format in der PDF-Datei codiert ist. Sie haben keine Verknüpfung zu einer bestimmten PDF-Datei hergestellt. Und 'ImageIO.write()' funktioniert nur dann richtig, wenn sich jai_imageio.jar in Ihrem Klassenpfad befindet. 1: Überprüfen Sie den Rückgabewert von 'ImageIO.write()'. 2: benutze 'ImageIOUtils', dies überprüft, ob die lib vorhanden ist. 3: Lesen Sie die Abhängigkeiten: https://pdfbox.apache.org/2.0/dependencies.html 4: Verwenden Sie die neueste Version, die 2.0.2 ist. (erst seit gestern :-)) –

+0

Ich habe Version 2.0.2 ausprobiert aber das Ergebnis war gleich. JAIs imageio, codec und core befinden sich im classpath und 'ImageIOUtils.writeImage' hat ein ähnliches Ergebnis wie 'ImageIO.write' erzeugt. Aber das Bearbeiten von TIFF als PNG (wie von @ user254948 vorgeschlagen) funktionierte, d. H. Ich konnte TIFF als PNG speichern, bearbeiten und in PDF speichern. Vielen Dank für Ihre Vorschläge. –

Antwort

1

Um PDF in das TIFF-Format zu extrahieren, müssen Sie die Bibliothek jai_imageio in den Klassenpfad einschließen.

nutzte ich die Verteilung der geotoolkit Repository, hier ist mein pom.xml-Extrakt:

<repositories> 
    <repository> 
     <id>Geotoolkit</id> 
     <name>Geotoolkit</name> 
     <url>http://maven.geotoolkit.org/</url> 
    </repository> 
</repositories> 

<dependencies> 
    <dependency> 
     <groupId>org.apache.pdfbox</groupId> 
     <artifactId>pdfbox</artifactId> 
     <version>2.0.3</version> 
    </dependency> 

    <!--required by PDFBox to create tiff images--> 
    <dependency> 
     <groupId>javax.media</groupId> 
     <artifactId>jai_imageio</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
</dependencies>