我正在探索将PDF文档转换为PDF / A的工具。 Ghostscript似乎为这种转换提供了开箱即用的支持。一个问题似乎是作为原始PDF文档一部分的某些真实类型字体未正确转换。如果我从转换的PDF / A文档中复制文本,并将其粘贴到记事本中,则复制的文本似乎是乱码文本。
原始文档文本可以很好地复制到记事本中。
我使用以下脚本:
gswin64 -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite -sPDFACompatibilityPolicy=1 -sOutputFile=FilteredOutput.pdf Filtered1Page.pdf
我已在Google云端硬盘中上传了1页源PDF文件: SampleInput
从命令生成的示例输出PDF / A文档位于Google驱动器中: SampleOutput
在Windows计算机上对此PDF运行上述查询将重现此问题。
是否有任何设置/命令可以正确处理PDF / A转换?
答案 0 :(得分:1)
无法保证从PDF复制和粘贴。子集字体将不具有可用的编码(例如ASCII或UTF-8),在这种情况下,如果它们具有关联的ToUnicode CMap,许多PDF文件,它们将仅适合剪切/粘贴/搜索不包含ToUnicode CMaps。
当然,PDF / A规范(在我看来奇怪地说)你不应该使用子集字体,但它并不总是可以判断字体是否是子集(并非所有创建者都遵循XXXXX +约定),甚至如果字体不是子集,仍然并不保证其编码是可用的。
查看你发布的文件,它不包含它使用的一种字体(Arial,Bold),所以Ghostscript用DroidSansFallback代替,它包含的字体(FreeSansBold)是一个子集(FWIW这个字体不用&实际上好像用了......)。后备字体是CIDFont,因此没有真正的文本正确的前景'。
我相信如果你让一个真正的字体可用于Ghostscript来取代Arial,Bold那么它可能会正常工作。这也可以解决更明显的问题,即字符间距不正确(在一个地方,非常不正确),这是由后备字体与原始字体的宽度不同引起的。
注意,因为警告信息已经告诉你不要使用-dUseCIEColor。
您无法复制/粘贴/搜索PDF并不意味着它不是有效的PDF / A-1b文件,因此这并不意味着创建( NOT 转换) )PDF / A-1b不适合'。