如何通过Ghostscript脚本解决PDF/A-2b转换时重复嵌入子集字体问题
解决Ghostscript转换PDF/A-2b时同名字体重复嵌入的问题
问题背景
使用Ghostscript 9.52执行以下命令将PDF转换为PDF/A-2b规范文件:
gswin64 -dPDFA=2 -dBATCH -dNOPAUSE -dFastWebView -sColorConversionStrategy=UseDeviceIndependentColor -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -dPDFACompatibilityPolicy=1 -sOutputFile=pdf_output_1.pdf PDFA_def2.ps input.pdf -dPDFSETTINGS=/prepress pdfmarks.txt
转换后通过Adobe Preflight检查时收到警告:
a font with same name is embedded multiple times. This can lead to wrong if the PDF viewer cannot differentiate these fonts
在文件属性的字体列表中可见相同CIDFont被多次嵌入,需通过Ghostscript命令直接修复该问题,替代Adobe Pro手动修复方式。
解决方案
通过调整Ghostscript的字体处理参数,优化字体嵌入逻辑并避免线性化带来的拆分问题,修改后的命令如下:
gswin64 -dPDFA=2 -dBATCH -dNOPAUSE -sColorConversionStrategy=UseDeviceIndependentColor -sProcessColorModel=DeviceRGB -sDEVICE=pdfwrite -dPDFACompatibilityPolicy=1 -dPDFSETTINGS=/prepress -dSubsetFonts=true -dCompressFonts=true -dDetectDuplicateFonts=true -sOutputFile=pdf_output_1.pdf PDFA_def2.ps input.pdf pdfmarks.txt
关键参数说明
- 移除
-dFastWebView:该参数用于生成线性化PDF,过程中可能将字体拆分并重复嵌入到文档不同部分,移除后可避免此类不必要的重复。 - 添加
-dSubsetFonts=true:启用字体子集化,仅嵌入文档实际使用的字形,既减小文件体积,也降低相同字体重复嵌入的概率。 - 添加
-dCompressFonts=true:压缩嵌入的字体数据,配合子集化进一步优化字体处理效率。 - 添加
-dDetectDuplicateFonts=true:让Ghostscript主动检测重复字体定义,自动合并相同字体资源,确保每个字体仅嵌入一次。 - 调整
-dPDFSETTINGS=/prepress位置:将该预设参数移至核心设备参数之后、输入输出文件之前,确保配置优先级正确生效。
执行修改后的命令后,重新用Adobe Preflight检查PDF/A文件,重复字体的警告应会消失,字体属性中也不会再出现同名CIDFont多次添加的情况。
内容的提问来源于stack exchange,提问作者Sanil GK
相关产品推荐
相关产品推荐

