【问题标题】:Java: java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(boolean)Java: java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(boolean)
【发布时间】:2021-06-18 16:00:58
【问题描述】:

我正在尝试使用 Java 阅读 PDF 文档。我对此并不陌生,对使用 IntelliJ 配置依赖项也是新手。完整的错误是:

Exception in thread "main" java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(boolean)'
    at org.apache.pdfbox.pdmodel.font.CMapManager.parseCMap(CMapManager.java:74)
    at org.apache.pdfbox.pdmodel.font.PDFont.readCMap(PDFont.java:213)
    at org.apache.pdfbox.pdmodel.font.PDFont.loadUnicodeCmap(PDFont.java:147)
    at org.apache.pdfbox.pdmodel.font.PDFont.<init>(PDFont.java:115)
    at org.apache.pdfbox.pdmodel.font.PDSimpleFont.<init>(PDSimpleFont.java:74)
    at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.<init>(PDTrueTypeFont.java:185)
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:89)
    at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:146)
    at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:66)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:933)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:515)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:489)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:156)
    at org.apache.pdfbox.text.LegacyPDFStreamEngine.processPage(LegacyPDFStreamEngine.java:144)
    at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:394)
    at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:322)
    at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:269)
    at org.apache.pdfbox.text.PDFTextStripper.getText(PDFTextStripper.java:233)
    at com.company.Main.main(Main.java:18)

我现在的代码:

public static void main(String[] args) throws IOException {
    PDDocument document = PDDocument.load(new File("src/dummy.pdf"));
    if(!document.isEncrypted()){
        PDFTextStripper stripper = new PDFTextStripper();
        String text = stripper.getText(document);
        System.out.println("Text:"+text);
    }
    document.close();
}

这是我安装的 jar:

不知道我做错了什么。

这是我正在阅读的 pdf 的链接。注意是日文字体:

https://www.soumu.go.jp/main_content/000731590.pdf

【问题讨论】:

  • 请准确完整地引用错误信息。
  • pdfbox 和 fontbox (2.0.23) 需要使用相同的版本。文本提取不需要 Jempbox。再次测试时请务必删除旧版本。

标签: java pdf pdfbox nosuchmethoderror


【解决方案1】:

蒂尔曼·豪舍尔是正确的。 PDFBox 和 Fontbox 的版本差异是错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-22
    • 2022-11-15
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多