PDF 文件的视觉差异以确定像素完美度 [关闭]

2024-01-01

我需要使用 MS Reporting Services 重构一些报告(使用 Jasper 生成)。原始报告的副本以 PDF 格式提供。要求是使新报告“像素完美”,这是非常麻烦的......

为了让生活更轻松,我想要一个工具来覆盖原始和生成的 PDF 报告,以测量它们是否像素完美。

有这样的工具吗?


最简单、立即可用的方法:使用图像魔术师compare https://imagemagick.org/script/compare.php(也适用于 Windows/Linux/Mac 等)。

它甚至可以比较 PDF 页面(尽管它使用 Ghostscript 作为其delegate首先将 PDF 页面渲染为像素图像):

 compare.exe         ^
    tested.pdf[0]    ^
    reference.pdf[0] ^
   -compose src      ^
    delta.pdf

所结果的delta.pdf会将每个像素描绘为红色,在两个比较的 PDF 页面之间具有不同的颜色。所有相同的像素都将是纯白色的。这[0] tell compare使用每个文件的第一页进行比较(页数从零开始)。

您可以通过以下示例了解这是如何实现的:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -compose src                   ^
    delta.pdf

以下是各个页面(转换为缩小的 PNG 以供网页显示)。参考页面在左侧,修改后的页面在中间,“delta-pixel-are-red”图像在右侧:

first page second page delta image

通过跳过,您可以获得略有不同的视觉结果-compose src范围。然后,您将获得原始文件的像素作为灰色阴影背景(用于上下文),增量像素为红色:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

first page second page delta.pdf

如果您不喜欢像素差异的红色,请使用-highlight-color:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -highlight-color green         ^
    delta.pdf

用于渲染 PDF 页面的默认分辨率是 72 dpi。如果您需要更高的精度,可以使用以下命令切换到 300 dpi-density参数如下:

 compare.exe                      ^
   -density 300                   ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

Note,切换到更高的密度会减慢进程并创建更大的文件。

您甚至可以为增量图像创建一个 *.txt 文件,该文件描述每个像素的坐标和各自的颜色值:

 compare                          ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -compose src                   ^
   -highlight-color black         ^
    delta.txt

然后简单地计算总像素数与黑色像素数(抱歉,这是 Unix/Linux/MacOSX 语法):

 total_pixels=$(( $(cat delta.txt | wc -l) - 1))
 black_pixels=$(( $(grep black delta.txt | wc -l) -1 ))

在上面的插图中使用的示例中,我得到

 total_pixels=500990
 black_pixels=8727

当然“理想”的结果是

 black_pixels=0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PDF 文件的视觉差异以确定像素完美度 [关闭] 的相关文章

  • Java 7 中 Object 和 int 的比较

    最近我偶然发现了一个问题 让我停下来思考 对我来说 下面的代码应该总是会触发错误 但是当我的一位同事问我为什么 Eclipse 没有显示错误时 我无法回答任何问题 class A public static void main String
  • C++20 概念 boolean-testable 之谜

    C 20引入了比较概念布尔可测试 https en cppreference com w cpp concepts boolean testable 但我注意到它的斜体和中间的连字符 表明它仅用于说明 并且因为没有所谓的std boolea
  • 邪恶的pdf在两页上渲染最后一行

    我在用邪恶 pdf https github com mileszs wicked pdf生成 pdf 我面临的问题是 有时它会跨两页显示页面中的最后一行 如果 wicked pdf 无法容纳该页面中的整个行 或者对页面中的行数设置限制 有
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • Fortran的性能

    Fortran 的表现计算机语言基准游戏 http shootout alioth debian org 出奇的糟糕 今天的结果显示 Fortran 在两项四核测试中分别排名第 14 和第 11 在单核测试中排名第 7 和第 10 现在 我
  • 将 Null 与 MySQL 触发器中的另一个值进行比较

    所以这是我的问题 我在更新表行时比较新值和旧值 但新值或旧值有时会为空 所以下面的代码不起作用 我可以解决这个问题吗 谢谢 BEFORE UPDATE ON mytable FOR EACH ROW BEGIN IF OLD assigne
  • Chrome 和 Firefox 不会在 iframe 中显示大多数 PDF 文档

    我运行的是 Windows 7 64 位 我最近更新了操作系统以安装最新更新 从那时起 大多数 PDF 文档已停止在我的程序中呈现 我的程序想要在单独的 iFrame 中显示 PDF 文档 我通过获取 PDF 文档的 URL 并设置来做到这
  • JsDoc 到 PDF 渲染器

    有人知道将 JsDoc 转换为 PDF 的工具吗 或者您必须通过将 HTML 文件转换为 PDF 来做到这一点 感谢您的回答 我所知道的 JSDoc 转换器是用 JavaScript 编写的 并且经过硬编码以生成 HTML 标签 我所知道的
  • 报告实验室性能低下

    我在用着报告实验室将一些大型图书馆 俄语纯文本 转换为 pdf 格式 当原始文件足够小 例如 大约 10 50 kB 时 它可以正常工作 但是 如果我尝试转换大文本 超过 500kB 则需要花费大量时间来进行报告实验室 有谁知道可能是什么问
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • 在 iOS 中,如何以编程方式填写 pdf 表单字段?

    我需要获取一个现有的 pdf 文件 并以编程方式填写带有文本的表单字段列表 然后保存 pdf 而不将其显示给用户 例如 如果 pdf 文件包含名为 LastName 和 FirstName 的字段 我想将 FirstName 的值设置为 L
  • 无法在 MARSHAMALLOW 文件选择器中选择 pdf、doc、ppt 等文件

    我正在使用我的 Android 应用程序将 pdf ppt doc 等文件上传到服务器 但在 Marshmallow 中 当文件选择器打开并且我浏览我的 Sdcard 或内部存储时 存在两个问题 1 它显示了所有我无法选择的文件 例如图像
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 如何使用Nodejs将json数据导出为指定格式的pdf文件?

    我是nodejs的初学者 我正在编写一个程序 将文本数据从 json 文件转换为 pdf 文件 这是我的输入文件 input json Info Company ABC Team JsonNode Number of members 4 T
  • PDFcropbox中的坐标指的是什么尺寸?

    例如 如果一个 pdf 指定了错误的页面大小 则可以使用以下命令裁剪掉文档中不需要的部分 鬼脚本 questions tagged ghostscript和命令参数 CropBox 我的问题是 命令中的数字指的是什么 我知道它们是点单位 一
  • 从 Windows 命令行打印 PDF

    我正在尝试打印当前目录中的所有 pdf 文件 当我在 cmd 中调用这个 bash 脚本时 singlepdf sh C Program Files x86 Adobe Reader 10 0 Reader AcroRd32 exe t G
  • 在 Android 中使用 PhoneGap 打开 PDF

    我需要打开一个位于 url 中的 PDF 文件 我需要用 PDF 查看器打开它 有可能的 谢谢大家 此致 我建议使用儿童浏览器插件 https build phonegap com blog childbrowser plugin并使用 G
  • PDFTron。 FreeText 注释字体

    我需要从以下位置获取字体信息 字体系列 颜色等 FreeText在 Net 中使用 PDFTron 进行注释 而我只看到FreeText GetFontSize方法 如何获取字体信息FreeText注解 如果存在外观流 则使用 E leme
  • 与 Perl 和 Ruby 比较的相似语言特性 __END__

    背景 Perl 和 Ruby 有 END and DATA 允许将任意数据直接嵌入源代码文件中的标记 尽管这种做法可能不适合通用编程用途 但它对于例行任务的 一次性 快速脚本非常有用 问题 还有哪些其他编程语言支持相同或类似的功能 它们是如
  • 为什么 Internet Explorer 无法使用 NodeJS 和 Express 下载 PDF?

    我正在使用 NodeJS 构建一个网站 需要提供一些 PDF 以及其他文件 由于我无法确定的原因 Internet Explorer 8 第一次无法在 Acrobat Viewer 中完全下载 PDF 有时此后多次 直接保存文件效果很好 但

随机推荐