1

我正在探索将 PDF 文档转换为 PDF/A 的工具。Ghostscript 似乎为这种转换提供了开箱即用的支持。一个问题似乎是作为原始 PDF 文档一部分的某些真字体没有正确转换。如果我从转换后的 PDF/A 文档中复制文本并将其粘贴到记事本中,则复制的文本似乎是乱码。

原始文档文本可以复制到记事本就好了。

我正在使用以下脚本:

gswin64 -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=FilteredOutput.pdf Filtered1Page.pdf

我在 Google Drive 中上传了一个示例 1 页源 PDF: SampleInput

从该命令生成的示例输出 PDF/A 文档位于 Google 驱动器中: SampleOutput

在 Windows 机器上对此 PDF 运行上述查询将重现该问题。

是否有任何设置/命令可以正确处理 PDF/A 转换?

4

1 回答 1

1

不保证从 PDF 复制和粘贴。子集字体将没有可用的编码(例如 ASCII 或 UTF-8),在这种情况下,如果它们具有关联的 ToUnicode CMap,它们将只能进行剪切/粘贴/搜索,许多 PDF 文件不包含 ToUnicode CMap。

当然,PDF/A 规范声明(在我看来很奇怪)您不应该使用子集字体,但并不总是可以判断字体是否是子集(并非所有创建者都遵循 XXXXX+ 约定),即使字体不是子集仍然不能保证它的编码是可用的。

查看您发布的文件,它不包含它使用的一种字体(Arial,Bold),因此 Ghostscript 用 DroidSansFallback 替换,它包含的字体(FreeSansBold)是一个子集(FWIW 这个字体实际上并不似乎被使用....)。后备字体是 CIDFont,因此文本不会“正确”。

我相信,如果您为 Ghostscript 提供真正的字体来替换 Arial,Bold,那么它可能会正常工作。这也将解决更明显的字符间距不正确的问题(在一个地方,非常不正确),这是由于后备字体与原始字体的宽度不同造成的。

注意,警告消息已经告诉您不要使用 -dUseCIEColor。

您无法复制/粘贴/搜索 PDF 的事实并不意味着它不是有效的 PDF/A-1b 文件,因此这并不意味着 PDF/A-1b 的创建(转换)不是'恰当的'。

于 2016-01-31T19:10:09.347 回答