首页 > 解决方案 > 比较Java中pdf的内容

问题描述

我正在编写 Java 单元测试,并希望将生成的 pdf 的内容与保存为资源的内容进行比较。我以为我可以将两者的内容读入字节数组并进行比较,但我无法让字节数组匹配。

我尝试比较两个 pdf,其中一个是另一个的副本,但仍然没有骰子,即使我设置了两个 pdf 的 createTime、lastModifiedTime 和 lastAccessTime。

使用diff checker后,我认为问题在于我如何在代码中设置元数据。在我的笔记本电脑上,我试图比较的两个文件中的 createTime、modifiedTime 等都是相同的,但在差异检查器中,唯一的区别是更新时间和创建时间,它们尚未从初始值更新。

有谁知道如何在不考虑元数据的情况下比较二进制文件的内容?

这是我的代码,供参考

File actualFile = new File("/tmp/" + pdfName);
Files.setLastModifiedTime(actualFile.toPath(), FileTime.fromMillis(testDateInMillis));
Files.setAttribute(actualFile.toPath(), "creationTime", FileTime.fromMillis(testDateInMillis));
Files.setAttribute(actualFile.toPath(), "lastAccessTime", FileTime.fromMillis(testDateInMillis));
File expectedFile = new File("src/test/resources/test-pdfs/" + pdfName);
Files.setAttribute(expectedFile.toPath(), "creationTime", FileTime.fromMillis(testDateInMillis));
Files.setAttribute(expectedFile.toPath(), "lastAccessTime", FileTime.fromMillis(testDateInMillis));
Files.setLastModifiedTime(expectedFile.toPath(), FileTime.fromMillis(testDateInMillis));

byte[] filebytes = Files.readAllBytes(expectedFile.toPath());
byte[] filebytes2 = Files.readAllBytes(actualFile.toPath());
Assertions.assertEquals(filebytes, filebytes2);

标签: javapdftestingjunit

解决方案


推荐阅读