使用Ghostscript 9.19,Windows 10 Pro
我使用Ghostscript将现有的PDF转换为PDF/A-1b。
然而,即使所需的字体已经嵌入到我的原始PDF中,Ghostscript正在输出PDF/A文件中替换它们。
具体而言:用字体时代--用字体来代替时代的新罗马,波尔德。取代字体时代-罗马时代新罗马时代。代字体时代-意大利语取代时代新罗马,意大利语。
我在我的机器上安装了Times (默认情况下它在那里)。
这是我的命令行:
C:\Program Files\gs\gs9.19\bin>gswin64c -dPDFA -dBATCH -dNOPAUSE
-sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite
-sPDFACompatibilityPolicy=1 -sFontPath=C:/Windows/Fonts
-IC:/windows/fonts -sOutputFile=C:/temp/testerA.pdf c:/temp/tester.pdf在处理Gjostscript之前:

在处理Ghostscript之后:

为什么Ghostscript要替换嵌入式字体?
如何防止Ghostscript替换嵌入式字体?
编辑:来自我的系统的“时代”字体的截图,显示名称与PDF中嵌入的名称相匹配:

发布于 2016-08-27 08:08:10
这里的基本答案是,字体是,而不是嵌入的。
查看我们看到的原始字体列表:
Times New Roman
Actual Font: TimesNewRomanPSMT不一样的字体。同样的,新罗马时代,意大利语也不像TimesNewRomanPS-意大利语等等。
在您的机器上设置TimesNewRomanPSMT,并将-sFontPath设置为指向该目录,意味着输入应该使用名为“TimesNewRomanPSMT”的字体,但不嵌入该字体,那么Ghostscript将使用磁盘中的TrueType字体,因为它具有相同的名称。
" TimesNewRomanPSMT“与”TimesNewRomanPSMT“的名字不一样,所以Ghostscript不会使用TimesNewRomanPSMT代替TimesNewRomanPSMT,而是使用内置的字体,并确定与TimesNewRomanPSMT最接近的匹配,这在我看来是完全合理的。
您可以自己定义替换,所以如果您想使用TimesNewRomanPSMT代替TimesNewRomanPSMT,您可以这样做。您只需编辑fontmap.GS即可。
但从根本上讲,Ghostscript并没有取代嵌入式字体,因为字体不是嵌入式的。请注意,这是PDF/A的要求,所有字体都是嵌入式的,所以pdfwrite设备甚至不能让字体不被嵌入,它必须嵌入一些东西。
https://stackoverflow.com/questions/39171223
复制相似问题