Apache PDFBox 为什么找不到 'Loader' 类?

13

我正在使用 pdfbox-app-2.0.18.jarpdfbox-app-2.0.17.jar

根据这个示例,我有以下代码:

try (FileOutputStream fos = new FileOutputStream(signedFile);
     PDDocument doc = Loader.loadPDF(inputFile)) {
    
     // code

}
执行此代码后,我收到了以下错误:
org.apache.pdfbox.Loader is not found 

如何解决这个问题?


4
你可以看到路径中使用了svn主干的一个例子,主干是指向3.0.0版本的开发版本。如果需要适用于2.0.18发布版本的示例,请使用与名称匹配的svn分支/文件夹中的示例。请注意,不要改变原文的意思。 - mkl
2
@Anish 在你的编辑中,你用代码的缩短版本替换了OP提供的链接。虽然确实应该在问题中包含相关代码,但找到它的URL也可能有所帮助,可以参考我的先前评论。因此,链接应与缩短代码一起保留。 - mkl
1
作为最初的提问者,我同意 @mkl 的观点,认为该链接很有帮助,应该重新放回去。 - user2677034
1
我已经重新编辑了链接。顺便说一下,作为原问题的提问者,您也可以随时编辑您的帖子。在您的帖子下面有一个 [编辑] 链接。 - mkl
1
谢谢@mkl,我很感激我可以编辑自己的帖子,我一直在等Anish B把它编辑回来,没关系,谢谢。 - user2677034
显示剩余2条评论
3个回答

11

在版本2.x或更低版本中,Loader类从未被引入,因此您不能使用它。

作为替代方案,您可以使用PDDocument类的load()方法来加载PDF文件。

修改为:

try (FileOutputStream fos = new FileOutputStream(signedFile);
     PDDocument document = PDDocument.load(inputFile)) {

        // code 

}

阅读此内容:- https://pdfbox.apache.org/2.0/migration.html


1
你的建议应该可行,但它并没有回答为什么找不到这个类的具体问题。另外为什么示例使用Loader.loadPDF(inputFile))而不是PDDocument.load(inputFile))呢? - user2677034
1
@user2677034,我尝试在较低版本的 JAR 包中查找,但没有找到。我找不到它。 - Anish B.
1
@Anish,我不理解你最近的编辑:"我认为Loader类从2.x版本中删除了,这就是你面临问题的原因" - 正如其他评论和答案所解释的那样,它并没有从2.x中被删除,它从未出现在1.x或2.x版本中!它是即将推出的3.x版本的材料。 - mkl

7
Loader类于2020年1月25日加入。查看该文件的SVN日志:SVN log
它不是2.0.18版本的一部分,因为在这个文件pdfbox-2.0.18-src.zip中找不到它。
所以,由于这个类太新了,所以您不能使用它!

5

PDDocument类表示正在处理的PDF文档。它的load()方法会加载由File对象指定的PDF文件:

PDDocument document = PDDocument.load(new File("path/to/pdf"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接