it-swarm.com.de

PDF Image mit Java erstellen

Ich möchte PDF Seiten in ein Bild (PNG, JPEG/JPG oder GIF) konvertieren. Ich möchte sie in ganzseitigen Größen.

Wie geht das mit Java? Welche Bibliotheken stehen dafür zur Verfügung? 

34

Sie benötigen einen PDF -Renderer. Es gibt ein paar mehr oder weniger gute auf dem Markt (ICEPdf, pdfrenderer), aber ohne dass Sie auf externe Tools zurückgreifen müssen. Die kostenlosen PDF -Renderer können auch keine eingebetteten Schriftarten darstellen und eignen sich daher nur zum Erstellen von Miniaturansichten (was Sie letztendlich möchten).

Mein bevorzugtes externes Werkzeug ist Ghostscript, das PDFs mit einem einzigen Befehlszeilenaufruf in Bilder konvertieren kann.

Dies konvertiert Postscript- (und PDF?) -Dateien in bmp for us, nur als Anleitung, die Sie an Ihre Bedürfnisse anpassen können.

pushd 
setlocal

Set BIN_DIR=C:\Program Files\IKOffice_ACME\bin
Set GS=C:\Program Files\IKOffice_ACME\gs
Set GS_DLL=%GS%\gs8.54\bin\gsdll32.dll
Set GS_LIB=%GS%\gs8.54\lib;%GS%\gs8.54\Resource;%GS%\fonts
Set Path=%Path%;%GS%\gs8.54\bin
Set Path=%Path%;%GS%\gs8.54\lib

call "%GS%\gs8.54\bin\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE#bmpmono -r600x600 -sOutputFile#%2 -f %1

endlocal
popd

UPDATE: pdfbox kann jetzt Schriftarten einbetten, so dass Ghostscript nicht mehr benötigt wird.

10
Daniel

In der Ghost4J-Bibliothek (http://ghost4j.sourceforge.net) können Sie seit Version 0.4.0 einen SimpleRenderer verwenden, um den Job mit wenigen Codezeilen auszuführen:

  1. Laden Sie PDF oder PS-Datei (verwenden Sie dazu die PSDocument-Klasse):

        PDFDocument document = new PDFDocument();
        document.load(new File("input.pdf"));
    
  2. Erstellen Sie den Renderer

        SimpleRenderer renderer = new SimpleRenderer();
    
        // set resolution (in DPI)
        renderer.setResolution(300);
    
  3. Machen

        List<Image> images = renderer.render(document);
    

Dann können Sie mit Ihren Bildobjekten machen, was Sie möchten, zum Beispiel können Sie sie als PNG wie folgt schreiben:

            for (int i = 0; i < images.size(); i++) {
                ImageIO.write((RenderedImage) images.get(i), "png", new File((i + 1) + ".png"));
            }

Hinweis: Ghost4J verwendet die native Ghostscript C-API. Sie müssen also ein Ghostscript auf Ihrer Box installiert haben.

Ich hoffe es hilft dir :)

31
zippy1978

Apache PDF Box kann PDFs in jpg, bmp, wbmp, png und gif konvertieren. 

Die Bibliothek enthält sogar ein Befehlszeilenprogramm namens PDFToImage , um dies auszuführen. 

Wenn Sie den Quellcode herunterladen und sich die PDFToImage-Klasse ansehen, sollten Sie herausfinden können, wie Sie das PDF Box verwenden, um PDFs in Bilder aus Ihrem eigenen Java-Code zu konvertieren.

25
Dónal Boyle
2
Maxym

jPDFImages ist nicht kostenlos, sondern eine kommerzielle Bibliothek, die PDF Seiten in Bilder im JPEG-, TIFF- oder PNG-Format konvertiert. Die Größe des Ausgabebildes kann angepasst werden.

1
alaris

Wenn GPL in Ordnung ist, haben Sie möglicherweise einen zusätzlichen Blick auf jPodRenderer (SourceForge)

0
mtraut