web-dev-qa-db-fra.com

PDF à l'image en utilisant Java

Je souhaite convertir PDF des pages en une image (PNG, JPEG/JPG ou GIF). Je les veux en format pleine page.

Comment cela peut-il être fait avec Java? Quelles bibliothèques sont disponibles pour y parvenir? 

34
yohan.jayarathna

Vous aurez besoin d'un rendu PDF. Il existe quelques produits plus ou moins bons sur le marché (ICEPdf, pdfrenderer), mais sans cela, vous devrez faire appel à des outils externes. Les outils de rendu gratuits PDF ne peuvent pas non plus restituer les polices incorporées et ne serviront donc que pour la création de vignettes (ce que vous voudrez éventuellement).

Mon outil externe préféré est Ghostscript, qui peut convertir des PDF en images avec un seul appel de ligne de commande.

Ceci convertit les fichiers Postscript (et PDF?) En bmp pour nous, juste comme guide à modifier selon vos besoins (sachez que vous avez besoin des envs vars pour que gs fonctionne!):

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 est maintenant capable d'incorporer des polices, donc plus besoin de Ghostscript.

10
Daniel

Dans la bibliothèque Ghost4J (http://ghost4j.sourceforge.net), depuis la version 0.4.0, vous pouvez utiliser un SimpleRenderer pour effectuer le travail avec quelques lignes de code:

  1. Charger le fichier PDF ou PS (utilisez la classe PSDocument pour cela):

        PDFDocument document = new PDFDocument();
        document.load(new File("input.pdf"));
    
  2. Créer le rendu

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

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

Ensuite, vous pouvez faire ce que vous voulez avec vos objets image, par exemple, vous pouvez les écrire au format PNG comme ceci:

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

Remarque: Ghost4J utilise l’API C native de Ghostscript. Vous devez donc installer un Ghostscript sur votre ordinateur.

J'espère que ça va t'aider :)

31
zippy1978

Apache PDF Box peut convertir des fichiers PDF au format jpg, bmp, wbmp, png et gif. 

La bibliothèque est même livrée avec un utilitaire de ligne de commande appelé PDFToImage

Si vous téléchargez le code source et consultez la classe PDFToImage, vous devriez être en mesure de comprendre comment utiliser PDF Box pour convertir des PDF en images à partir de votre propre code Java.

25
Dónal Boyle
2
Maxym

jPDFImages n'est pas gratuit, mais une bibliothèque commerciale qui convertit les pages PDF en images au format JPEG, TIFF ou PNG. La taille de l'image de sortie est personnalisable.

1
alaris

Si la GPL convient, vous pouvez également consulter/ jPodRenderer (SourceForge)

0
mtraut