使用Java比较两个PDF文件(方法)

4
我需要编写一个Java类,可以比较两个PDF文件并指出它们之间的差异(包括文字、位置和字体),并使用某种高亮方式显示出来。 我的初始方法是使用pdfbox解析文件,并将提取的文本存储在某种数据结构中,以便于比较。 有没有什么Java库可以提取文本、保留格式,并帮助我进行索引和比较?我可以使用tika或Google的diff-match吗? tika以xhtml的形式提取文本,但我该如何比较两个xhtml文件?

2
https://github.com/red6/pdfcompare,另一个评估选项。 - Naveen Kumar R B
5个回答

11

3

是的,但谷歌的差异比较工具无法比较结构化/格式化文本。 - Alvin
@Alvin 我有所怀疑。你进行了比较吗? - Sajal Dutta
不是,但它非常在那个谷歌页面上,它只比较纯文本。 - Alvin
1
那就是问题所在!Pdfbox提取的是纯文本。我想要的是保留格式的内容。比如说,Apache Tika通过创建一个XHTML文件来保留格式,但是我该如何比较两个XHTML文件呢?或者我应该从头开始创建一些东西,比如保存坐标并进行比较来保留格式。 - Alvin
1
@Alvin 我可能完全误读了问题。但由于XHTML只是HTML的严格版本,您不能使用Daisydiff吗?http://code.google.com/p/daisydiff/ - Sajal Dutta
显示剩余7条评论

1

请查看文章,了解如何比较PDF文档。注意以下内容:

PDF是一种灵活的文件格式,您可以通过多种不同的方式完成任务。例如,您可以使用Acrobat和Ghostscript创建两个不同版本的PDF文件。这些文件(希望如此)应该是完全相同的。但是,文件大小和每个文件的内部结构会有很大的不同。


是的,我检查过了,但那并没有真正帮助到我...我需要一种方法,以便我可以开发一些Java程序...据我所记,没有直接的开源文档比较器。 - Alvin

0
请参考以下给出的示例代码进行PDF比较。
ZPDFCompare obj = new ZPDFCompare();
obj.pdfcompare("C:\\Users\\Desktop\\expectedFile.pdf", "C:\\Users\\Desktop\\actualFile.pdf", "C:\\Users\\Desktop\\expectedFile_Diff.pdf","C:\\Users\\tarun.kumar\\Desktop\\actualFile_Diff.pdf");

ZeonPad 提供了免费的 Java API,用于 PDF 比较。


5
请注意,如果您想推广或推荐自己的产品/博客,这里有一些指南可以参考。遵循这些指南可以帮助您避免给人垃圾邮件的印象。您能否编辑以明确说明您的关联?谢谢。(如果您实际上没有任何关联,也值得一提。) - NobodyNada

0

我不知道您是否已经解决了您的问题。以下是我的解决方案。

首先,我们可以使用Pdf2dom将PDF转换为HTML,然后使用daisydiff生成HTML比较报告。如果您需要一个PDF文件,则可以将该HTML报告转换为PDF。但请记住,由于PDF的复杂性,PDF到HTML转换并不是100%准确的。您还可以尝试另一种方法,即将PDF转换为图像,逐像素进行比较并生成PDF报告。您可以尝试使用PDFcompare库。在我看来,它很有前途。如果有人已经尝试过,请让我知道。


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