当前位置: 首页 > 知识库问答 >
问题:

转换为BufferedImage时的PDFBox错误:NoClassDefFoundError:org/apache/fontbox/FontBoxFont

白禄
2023-03-14

我正在尝试使用PDFBox将PDF文档转换为. png文件。我按照这个答案来了解需要什么依赖关系,并给我一个起点。当我尝试在页面中循环并创建BufferedImage时,我收到了一个NoClassDefFoundError错误。它正在寻找org/apache/fontbox/FontBoxFont,但是通过一些广泛的Google搜索,我没有找到任何关于FontBoxFont的东西。这是一个需要包含的单独的jar吗?是什么导致了这个错误?项目中包含了以下. jar:

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.renderImageWitDPI(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

共有1个答案

柯甫
2023-03-14

显然,您需要将ApacheFontbox2.0.2添加到类路径中,您可以从mvnrepository获得它

 类似资料:
  • 问题内容: 我一直在尝试将a转换为…而且我没有运气。 我有一个预先存在的ImageIcon,对于存在的大量BufferedImage操作,需要将其转换为Buffered Image。 我发现了几种方法,但是所有方法都占用大量CPU。 问题答案: 有什么问题:

  • 问题内容: 我有一个图像文件的Data-URL,必须将其传递给另一个函数。从Data-URL到BufferedImage的路径必须是一个byteArray。 我的方法如下: 问题是,它总是抛出UnknownImageFormatException异常,这意味着inputImage为null,这意味着ImageIO.read无法识别图像类型。 我使用ImageIO.getReaderFormatNa

  • 问题内容: 在StackOverflow上已经存在类似此链接的问题,并且可接受的答案是“广播”: 在我的程序中,我尝试: 不幸的是,我得到运行时错误: sun.awt.image.ToolkitImage无法转换为java.awt.image.BufferedImage 显然,投射不起作用。 问题是:将Image转换为BufferedImage的正确方法是(或存在)什么? 问题答案: 从Java游

  • 问题内容: 我正在使用servlet上传图像。为了执行调整大小的操作,我将InputStream转换为BufferedImage。现在我想将其保存在mongoDB中。因为据我所知,我是mongoDB的新手,所以GridFS采用InputStream。 那么,有什么方法可以将BufferedImage转换为InputStream吗? 问题答案: 您需要使用该类将BufferedImage保存为,然后

  • 问题内容: 如何将a转换为in ? 我正在使用JAVA包装器(不是 JavaCV )。由于我是新手,因此在理解工作方式方面存在一些问题。 我想做这样的事情。(根据Ted W.的回复): 这行不通。只是一张尺寸正确的黑色图片。 问题答案: 我还试图做同样的事情,因为需要将经过处理的图像与两个库结合在一起。而我一直试图做的是把中,而不是RGB值。而且有效!所以我做的是: 1,转换为字节数组 2.然后,

  • 问题内容: 我这里有点问题。 我有一个applet,用户可以在其中“绘制”它。为此,我使用java.awt.Graphics2D。但是,如何将用户绘图图像保存为JPEG图像,或者至少将其转换为BufferedImage或其他内容?我不知道该怎么做。 谢谢。 问题答案: 我这样做,并且效果很好: 就这些了:)谢谢大家:)