为什么同一自动化流程生成的 pdf 在不同机器上会有所不同?

2023-12-12

我有一个生成 pdf 的自动化流程然后我们通过批准测试将其与已知版本进行比较验证该管道中没有任何损坏。我标准化不匹配的字段例如创建/修改日期和时区,本地所有内容始终 100% 匹配。然而由于某种原因,我们的构建服务器上生成的 pdf 是very与我在本地生成的数据不同,有时我在本地生成的数据要大 20%。

在 winmerge 中比较文件时的第一个区别是/FontName字段如下所示:

本地生成

/FontName/QOAAAA+TimesNewRomanRegular

构建服务器生成

/FontName/QYAAAA+TimesNewRomanRegular

之后我们有分歧/FontBBox、长度和二进制数据。我看到了这样的几个街区。

我怀疑两台机器上可用的字体略有不同,在两台机器上选择的字体并嵌入到 pdf 中,但我不知道是什么Q*AAAA上面的代码意味着也不意味着如何验证该假设。

Edit:

pdffonts 报告两者具有相同的字体,但这难道不是同一嵌入字体的不同版本吗?

W:\xpdfbin-win-3.03\bin64> .\pdffonts.exe w:\...\PhantomRasterizer\Can_rasterize_html_to_pdf.slide_with_table_and_svg.approved.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
TimesNewRomanRegular                 CID TrueType      yes no  yes      7  0
ArialBold                            CID TrueType      yes no  yes     12  0
ArialRegular                         CID TrueType      yes no  yes     17  0
W:xpdfbin-win-3.03\bin64> .\pdffonts.exe W:\...\PhantomRasterizer\Can_rasterize_html_to_pdf.slide_with_table_and_svg.received.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
TimesNewRomanRegular                 CID TrueType      yes no  yes      7  0
ArialBold                            CID TrueType      yes no  yes     12  0
ArialRegular                         CID TrueType      yes no  yes     17  0

请阅读我对这个问题的回答:为什么PDF文件内容相同却不同?

你的问题相当于“为什么a中的条目顺序是这样的”HashMap在不同的 JVM 上有不同吗?”答案很简单:因为HashMaps 就是这样设计的。 AHashMap不是一个TreeMap.

您现在关注的是字体,更具体地说是字体子集(关于字体子集名称中的随机字符 ISO-32000-1 规定“字母的选择是任意的”,因此您在问题中质疑 ISO 标准) 。然而,这是你遇到的最小的麻烦。 PDF 的 ID 也应该不同,字典中的条目顺序就像字典中的条目一样HashMap。阅读 ISO-32000-1 第 7.3.7 节:

字典中的条目代表一个关联表,因此 即使可以施加任意命令,也应是无序的 当它们写入文件时。该顺序将被忽略。

对象编号也是如此。我见过一些测试,检查对象编号为 1 的对象是否是这个或那个字典,以及对象编号 2 的对象是这个还是那个数组。但是:对象数量并不重要。您可以在一个系统中创建一个 PDF 文档,其中第一个对象是字典,第二个对象是数组,并且相同的 PDF 文档使用相同的代码情况恰恰相反。我们最近注意到,当使用 Java 8 而不是 Java 7 测试我们的软件时,我们的一个测试很糟糕。一旦更改 JVM,您的测试就会遇到同样的问题。

你的验证是错误的。当我们测试 PDF 时,我们使用完全不同的方法。

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

为什么同一自动化流程生成的 pdf 在不同机器上会有所不同? 的相关文章

  • 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
  • 在 iOS 上将 SwiftUI 视图转换为 PDF

    我用 SwiftUI 画了一些漂亮的图表 因为它非常简单且容易做 然后我想将整个 SwiftUI 视图导出为 PDF 以便其他人可以以良好的方式查看图表 SwiftUI 没有直接为此提供解决方案 Cheers Alex 经过一番思考 我想到
  • 禁用右键单击嵌入元素内的 pdf

    我有一个embed我在其中提供路径的元素pdf文件 我想阻止它被下载 但是当我右键单击该 t 时 我会看到保存和打印 pdf 的选项 我想阻止这些选项 I tried 但它禁用除 PDF 之外的整个页面上的右键单击 一种不受 CORS 或
  • Android 中的列表视图到 pdf

    我有一个自定义列表视图 我想从整个列表视图制作pdf 我参考了很多帖子并实现了下面的代码 该代码将我的列表视图转pdf 但问题是它不包含整个列表视图项目 pdf 中仅提供前几项 我的转换函数列表视图转pdf is fab setOnClic
  • 查看pdf字节流而不将其保存在Android中

    Ref 如何在 Android 中渲染 PDF https stackoverflow com questions 2883355 how to render pdf in android 我有一个包含 PDF 内容的字节流 并希望在我的
  • 使用 javascript 在 IFrame 中打印 PDF 文件仅获取一页

    这是我打印 pdf 文件的代码 在这里 在打印时我只得到一页 我需要一个解决方案 function printPdf var ifr document getElementById frame1 PDF is completely load
  • 使用 /CCITTFaxDecode 过滤器从 PDF 中提取图像

    我有一个通过扫描软件生成的 pdf 文件 该 pdf 每页有 1 个 TIFF 图像 我想从每个页面中提取 TIFF 图像 我正在使用 iTextSharp 我已经成功找到了图像 并且可以从PdfReader GetStreamBytesR
  • R 在设置宽度和高度的 PDF 中缩放绘图元素

    尽管发送到 PDF 的 R 图可以在插图或页面布局软件中随意重新缩放 但科学期刊通常坚持提供的图具有特定的尺寸 是否可以直接在 R 中在给定 PDF 大小内缩放所有绘图元素的大小 require ggplot2 p lt qplot dat
  • 从 .docx 转换为 pdf 时,图像显示效果不佳

    我转换了 docx文件至 pdf文件中 文本转换得很好 但是图像 docx文件没有出现 而是表示为一些特殊字符 下面是我的代码 import com lowagie text Document import com lowagie text
  • 大虾如何生成目录?

    有没有一种简单的方法来生成带有相应页面链接的目录 在最近版本的虾中 是的 查看 API 示例的 Examples general outlines rb 示例 See http prawnpdf org manual pdf http pr
  • ABCPdf 添加文档 javascript

    是否可以使用 ABCPdf 将文档 JavaScript 添加到生成的 PDF 中 如果你的意思是 在文档加载后执行的Javascript 那么看看本文档页面 http www websupergoo com helppdf8net sou
  • Apache PDFBox:将最后一页移动到首页

    我正在使用 Apache PDFBox 编写一个简单的 Java 应用程序 我有几个 PDF 其中最后一页是前几页内容的索引 我需要索引 最后一页 成为PDF文件的第一页 是否可以 我还发现了http itextpdf com http i
  • 显示来自 weburl iphone sdk 的 pdf

    我正在开发一个项目 我想显示网站上的 pdf 我有 pdf 的 url 知道如何做到这一点 我还想创建网站上 pdf 的缩略图 您可以在您的设备中显示 pdf 文件 直接将 url 传递给 UIWebView UIWebView webVi
  • 打开 PDF 到书签/指定目标?

    我正在尝试使用 python 打开特定书签的 PDF 到目前为止 我可以在命令提示符中运行以下命令并得到我想要的 last是 PDF test pdf 中指定目的地的名称 C Program Files x86 Adobe Reader 1
  • JsPdf 库无法读取 PDF 中的阿拉伯语

    在 pdf 中显示阿拉伯值的代码不起作用 它向我展示了一些我无法理解的奇怪语言 var sm nature name nature1 ar 1 name nature2 ar 2 name nature3 ar 3 name nature4
  • TCPDF UTF-8 符号未显示

    我使用最新的 TCPDF 版本 5 9 但在编码方面遇到一些奇怪的问题 我需要立陶宛语语言符号 例如 但只能得到其中的一小部分 其他的还是这样 所以我该怎么做 我使用默认的 times 字体 它带有 TCPDF 下载 任何帮助 将不胜感激
  • 在 Swift 中从 UIScrollView 创建 PDF 文件

    我想从 UIScrollView 的内容创建一个 PDF 文件 func createPdfFromView aView UIView saveToDocumentsWithFileName fileName String let pdfD
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 如何使用带有 python 的报告实验室将 html 文档转换为 pdf

    我正在尝试使用报告实验室将我创建的 html 文档转换为 pdf html 文档如下 我不确定如何做到这一点 我在网上查看过 似乎找不到解决方案 html文档 h2 Convert to pdf h2 p Lorem ipsum dolor

随机推荐