- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 FileUtils 来比较两个相同的 pdf。这是代码:
boolean comparison = FileUtils.contentEquals(pdfFile1, pdfFile2);
尽管两个 pdf 文件是相同的,但我总是得到 false
。我还注意到,当我执行时:
byte[] byteArray = FileUtils.readFileToByteArray(pdfFile1);
byte[] byteArrayTwo = FileUtils.readFileToByteArray(pdfFile2);
System.out.println(byteArray);
System.out.println(byteArrayTwo);
我得到两个 pdf 文件的以下字节码:
[B@3a56f631
[B@233d28e3
因此,尽管两个 pdf 文件在视觉上完全相同,但它们的字节码不同,因此无法通过 boolean 测试。有没有办法测试相同的pdf文件是否相同?
最佳答案
不幸的是,对于 PDF 来说,“相同的文件”和“视觉上相同”的文件之间存在很大差异。所以第一个问题是你在寻找什么。
一个非常简单的例子,PDF文件中的信息可以压缩也可以不压缩,并且可以使用不同的压缩过滤器进行压缩。例如,采用一个部分内容未压缩的文件,并使用 ZIP 压缩过滤器压缩该内容,将得到两个在字节级别上非常不同的文件,但在视觉上却非常相似。
因此您可以执行多种不同的操作来比较 PDF 文件:
1)如果您想检查是否有“相同的文件”,请读入它们并计算某种校验和,如 Peter Petrov 之前回答的那样。
2)如果您想知道或知道文件在视觉上是否相同,最常见的方法是某种渲染。将所有页面渲染为图像并比较图像。实际上,这并不像听起来那么简单,有简单的(例如 callas pdfToolbox)和复杂的(例如 Global Vision DigitalPage)应用程序实现某种“相同”算法(注意,我与这两种算法都相关)这些供应商)。
因此,首先要明确您到底需要什么,然后仔细选择哪种方法最有效。
关于java - Apache FileUtils 比较两个相同的 pdf 时不断返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337096/
这很奇怪……我想不明白为什么会这样。 我有一个文件夹,里面装满了各种 CoffeeScript、SASS、HTML 和 XML 文件。 我有一个 Ruby 脚本,可以将它们全部提取、编译并将它们缩小到
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试使用 org.apache.commons.io.FileUtils.listFiles() 获取没有扩展名的文件列表,如下所示 http://www.avajava.com/tutoria
我正在尝试从 mysql 读取并将结果写入 txt 文件。如您所见,我使用 Apache 的 Commons IO。结果集包含推文,下面的每个 sql 查询几乎返回 725 行以写入 txt 文件。我
我使用 FileUtils.mv 像这样移动文件夹: FileUtils.mv("/home/sean/_site/", "/home/sean/projects/_site/") 它的返回inval
我正在尝试将文件从一个目的地复制到另一个目的地。我无法理解为什么会发生错误。如有任何帮助,我们将不胜感激。 public class FileSearch { public void find
我正在开发一个 Java 8 应用程序,该应用程序下载目录/文件列表并将它们存储在生成的 Temp 目录(%LocalAppData%/Temp/ 中的目录)中。下载完成后,会生成一个 XML 文件并
Apache commons-io 中的 FileUtils.forceMkdir 代替 JRE 中内置的 File.mkdirs 有何用途? forceMkdir 的文档是 Makes a dire
我正在用java编写一个程序来导入用户输入的文本文件,使用两个关键字对其进行加密,并将输出写入一个新的文本文件。 我正在使用 FileUtils.readFileToString() 将文本文件读入字
我知道之前已经有人问过这个变体。 但是,我的功能之一是使用 Common's FileUtils 。这里,它只需要 File 对象和 String。有什么方法可以对其进行单元测试吗? 最佳答案 当然。
我使用此代码以递归方式从给定目录获取所有文件。 List fileList = (List) FileUtils.listFiles(new File(directoryName), null , t
我正在使用以下内容将 StringBuilder 写入现有文本文件。 FileUtils.writeStringToFile(file, sb.toString(), StandardCharsets
我的代码有什么问题吗?引用这个question 该文件夹未被删除。 File f = new File(directory+"\\OOO"); if (f.exists())
如何使用 apache commons FileUtils 传递用于下载文件的用户凭据? 我正在使用如下身份 validator ,但似乎不起作用。它甚至不会提示凭据不良,因此看起来我的身份 vali
大家好,我正在尝试获取目录列表。我正在使用 FileUtils listFiles()。 我想做这样的事情:listFiles(File,IOFileFilter,false)。我真正的问题是如何从
我正在使用这个 atm: package com.obisdian.downloader; import java.io.BufferedWriter; import java.io.File; im
我需要按扩展类型和忽略大小写模式在目录和子目录中查找文件,这是我的代码: String[] patron = {"doc", "xls", "ppt"}; Iterator iter = FileU
我正在尝试使用 commons.io Apache 库 从 URL 下载一个大文件。这是我的代码: InputStream stream = new URL(CLIENT_URL).openS
我有一个目录,我在其中以编程方式(在Java中)进行递归解压缩(这似乎有效),但最终我留下了一个包含很多子目录和文件的目录。每次运行此方法时,我都想从头开始,因此我总是删除临时目录中存在的文件夹及其剩
在我的项目中,我有一个 resources 目录,里面有一个 my_directory。 my_directory 包含文本文件。 我想循环这个目录: URL resource = Resources
我是一名优秀的程序员,十分优秀!