使用Ghostscript 9.19,Windows 10 Pro
我正在使用Ghostscript将现有PDF转换为PDF / A-1b。
但是,即使所需的字体已嵌入原始PDF中, Ghostscript在输出PDF / A文件中替换它们。
具体做法是: 将字体Times-Bold替换为Times New Roman,Bold。 用字体Times-Roman代替Times New Roman。 用字体Times-Italic代替Times New Roman,Italic。
我的机器上安装了Times New Roman(默认情况下就是这样)。
这是我的命令行:
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
为什么Ghostscript会替换嵌入字体?
如何防止Ghostscript替换嵌入字体?
编辑:我系统中Times字体的屏幕截图,显示该名称与PDF中的嵌入名称相匹配:
答案 0 :(得分:1)
这里的基本答案很简单,首先是字体不。
查看原始字体列表,我们看到:
Times New Roman
Actual Font: TimesNewRomanPSMT
哪个字体不一样。同样Times New Roman,Italic与TimesNewRomanPS-ItalicMT等字体不同。
在你的机器上安装TimesNewRomanPSMT,并且将-sFontPath设置为指向该目录,意味着如果你有输入使用名为'TimesNewRomanPSMT'的字体但没有嵌入它,那么Ghostscript将使用来自磁盘的TrueType字体,因为它有相同的名称。
你可以自己定义替换,所以如果你想使用TimesNewRomanPSMT代替Times New Roman,你可以这样做。你只需要编辑fontmap.GS。
但从根本上说Ghostscript并没有取代嵌入式字体,因为字体没有嵌入。请注意,PDF / A要求嵌入所有字体,因此pdfwrite设备甚至不能保留非嵌入字体,它必须嵌入一些东西。