使用Ghostscript压缩PDF时如何保留字体名称?
保留PDF原始字体名称的Ghostscript解决方案
你遇到的是Ghostscript的pdfwrite设备默认行为导致的字体重命名问题——为了优化PDF文件大小和内部结构,它会自动给嵌入的字体生成简化的内部标识(比如你看到的g_d36_f1)。不过确实有专门的参数可以让它保留原始字体名称,具体解决方法如下:
核心命令参数
添加-dPreserveFontNames=true到你的压缩命令中,这会强制pdfwrite设备保留原始字体名称,而不是生成新的内部命名。
完整命令示例
gswin64c -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dPreserveFontNames=true -sOutputFile=output.pdf input.pdf
补充说明
- 如果你的原始PDF包含子集化字体,且希望完全保留字体的原始子集状态(不仅是名称),可以额外添加
-dSubsetFonts=false(不过默认情况下,Ghostscript会保持原始字体的子集化状态,这个参数主要用于强制关闭子集化)。 - 验证效果:执行你之前的字体检查命令
对比两者的字体信息,应该能看到gswin64c -dPDFINFO -dNOPAUSE -dBATCH input.pdf gswin64c -dPDFINFO -dNOPAUSE -dBATCH output.pdfHelvetica这类原始字体名称被保留下来,再用pdf.js分析也不会出现重命名后的标识。
额外提示
如果需要确保字体被完整嵌入(避免后续打开时缺失字体的问题),可以再加上-dEmbedAllFonts=true参数,不过这和字体名称保留没有直接关联,是优化PDF兼容性的补充选项。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

