2016-09-13 5 views
4

Я пытаюсь преобразовать PDF-документ в .png-файлы с помощью PDFBox. Я последовал за this answer, чтобы получить представление о том, какие зависимости необходимы и дать мне отправную точку. Когда я пытаюсь пройти через страницы и создать BufferedImage, я получаю ошибку NoClassDefFoundError. Он ищет org/apache/fontbox/FontBoxFont, но через какой-то обширный Googling я ничего не нашел о FontBoxFont. Это отдельная банка, которая должна быть включена? Что вызывает эту ошибку? Следующие .jar, включены в проект:Ошибка PDFBox при преобразовании в 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 

Вот основной метод:

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()); 
    } 
} 

Ошибка генерируется на 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 

ответ

4

Очевидно, что вам нужно добавить Apache FontBox 2.0.2 к вашему пути к классу, вы можете получить его от here

+0

Ну, очевидно, однако, я не мог его найти. Спасибо вам за это. – Shaggy