J'essaie de convertir un fichier PDF en fichiers .png en utilisant PDFBox. J'ai suivi this answer pour avoir une idée des dépendances nécessaires et pour me donner un point de départ. Lorsque j'essaie de parcourir les pages et créer le BufferedImage
je reçois une erreur NoClassDefFoundError
. Il est à la recherche de org/apache/fontbox/FontBoxFont
mais à travers un peu de Googling je n'ai pas trouvé quelque chose à propos de FontBoxFont
. Est-ce un pot séparé qui doit être inclus? Qu'est ce qui cause cette erreur? Les années .jar suivants sont inclus dans le projet:Erreur PDFBox lors de la conversion en BufferedImage: NoClassDefFoundError: org/apache/fontbox/FontBoxFont
pdfbox-2.0.2.jar
levigo-jbig2-imageio-1.6.5.jar
pdfbox-tools-2.0.2.jar
jai-imageio-core-1.3.1.jar
commons-logging-1.2.jar
Voici la principale méthode:
public static void main(String[] args) {
String sourceDir = "C:/Dev/Workspace/PdfToPng/Stocks.pdf";
String destinationDir = "C:/Dev/Workspace/PdfToPng/pages/";
try {
PDDocument document = PDDocument.load(new File(sourceDir));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for(int page = 0; page < document.getNumberOfPages(); ++page) {
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, destinationDir + (page+1) + ".png", 300);
}
document.close();
} catch(Exception e) {
System.out.println(e.getStackTrace());
}
}
L'erreur est lancé sur BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/fontbox/FontBoxFont
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:75)
at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:123)
at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:815)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:472)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:189)
at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:94)
at PdfToPng.main(PdfToPng.java:25)
Caused by: java.lang.ClassNotFoundException: org.apache.fontbox.FontBoxFont
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 12 more
Bien évidemment, mais je ne pouvais pas le trouver. Merci pour ça. – Shaggy