2016-09-13 1 views
4

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 

Répondre

4

Il est évident que vous devez ajouter Apache FontBox 2.0.2 à votre classpath, vous pouvez l'obtenir de here

+0

Bien évidemment, mais je ne pouvais pas le trouver. Merci pour ça. – Shaggy