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?
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.
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:
Charger le fichier PDF ou PS (utilisez la classe PSDocument pour cela):
PDFDocument document = new PDFDocument();
document.load(new File("input.pdf"));
Créer le rendu
SimpleRenderer renderer = new SimpleRenderer();
// set resolution (in DPI)
renderer.setResolution(300);
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 :)
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.
Jetez un coup d'œil aux articles:
1) PdftoImage-Convert PDF en image à l’aide de la bibliothèque PdfRenderer , lien direct vers code source
2) Java: génération de PDF et prévisualisation sous forme d'image - iText et PDF Renderer
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.
Si la GPL convient, vous pouvez également consulter/ jPodRenderer (SourceForge)