【发布时间】:2014-07-16 20:40:18
【问题描述】:
我有一个自动生成 pdfs which we then compare to a known version via approval tests 的过程来验证该管道中的任何内容都没有损坏。 I normalize mismatching fields 就像创建/修改的日期和时区以及本地所有内容始终匹配 100%。但是由于某种原因,在我们的构建服务器上生成的 pdf 与我在本地生成的相比非常不同,有时我在本地生成的 PDF 会大 20%。
在 winmerge 中比较文件时的第一个区别是 /FontName 字段,如下所示:
本地生成
/FontName/QOAAAA+TimesNewRomanRegular
生成的构建服务器
/FontName/QYAAAA+TimesNewRomanRegular
之后,我们在/FontBBox、长度和二进制数据方面存在差异。我看到了几个这样的块。
我怀疑两台机器上的字体略有不同,并且被选择并嵌入到 pdf 中,但我不知道上面的 Q*AAAA 代码是什么意思,也不知道如何验证这个假设。
编辑:
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
【问题讨论】:
-
您能比较每个位置使用的确切字体吗?它可能类似于更广泛的 UTF 字符集。可以是相同字体的不同版本一样简单。
-
@DavidWoods 我如何找出嵌入到 pdf 中的字体?
-
@GeorgeMauer stackoverflow.com/questions/614619/…
-
您可以尝试使用@font-face CSS 来强制使用本地提供的特定字体。这可以消除二进制字体差异作为罪魁祸首。
-
我发现开头的六个字符是随机生成的,它们的存在表明嵌入是字体的子集,而不是整体。这些定义线本身是否不同?字符集应包含在此处的定义中。
标签: pdf