鬼脚本:;丢失pdf原始嵌入字体

鬼脚本:;丢失pdf原始嵌入字体,pdf,ghostscript,Pdf,Ghostscript,当我使用命令gs-sDEVICE=pdfwrite-dNOPAUSE-dBATCH-dNOOUTERSAVE-dSAFER-dPDFSETTINGS=/prepress-dCompressFonts=true-dSubsetFonts=false-dEmbedAllFonts=true-sColorConversionStrategy=RGB-dCompatibilityLevel=1.6-sOutputFile=output.pdf new27.pdf转换我的pdf文件,然后我得到新文件 我在

当我使用命令gs-sDEVICE=pdfwrite-dNOPAUSE-dBATCH-dNOOUTERSAVE-dSAFER-dPDFSETTINGS=/prepress-dCompressFonts=true-dSubsetFonts=false-dEmbedAllFonts=true-sColorConversionStrategy=RGB-dCompatibilityLevel=1.6-sOutputFile=output.pdf new27.pdf转换我的pdf文件,然后我得到新文件

我在Adobe Acrobat Reader中打开此新pdf文件时发现错误:

这是原始pdf的字体:

这是转换后的新pdf字体:


是否存在控制ghostscript的参数不会更改嵌入的字体?

问题在于,没有嵌入类型1字体数据,并且由于这些是子集名称(因此使用自定义编码),PDF使用者无法创建可用的替代字体

FontDescriptor存在,但实际字体数据不存在。我不知道为什么,我以前从未见过这样的问题,你应该向我报告一个bug

如果您能找到(或创建)一个更简单的示例,可能会有所帮助。原始文件有4页,使用18种类型1字体,输出中似乎没有嵌入任何字体。如果您能够创建一个字体,那么使用一个字体的单个短文本行将是理想的

[更新]

我的一位同事帮我看了一下文件。问题在于PDF文件,特别是字体。每个字体都包含一个“/.notdef”字形(这是必需的),并且每个字体都以一个未定义的操作代码(0x00)开头。这意味着字体真的被破坏了

那么,为什么这不会给Acrobat(或者说,渲染时的Ghostscript)带来问题呢

由于通常不使用“/.notdef”字形,因此只有在尝试绘制字体中不存在的字形时才使用“/.notdef”字形(因此,是字体中必需的条目,它是唯一必须存在的字形)

但在创建PDF文件时,Ghostscript PDF设备会将type 1字体转换为更紧凑的形式,即Type1C或CFF字体。这意味着要解析glyph描述,它必须使用的描述之一是/.notdef,因为这在所有字体中都是必需的

当Ghostscript试图解析/.notdef标志符号时失败,因此放弃嵌入字体。它仍然发出FontDescriptor,试图生成一个工作文件;如果字体不是子集,则可能会找到可用的替换字体。在这种情况下,因为字体是子集,并且使用了不可能的自定义编码

字体的其他方面不太理想,例如字体边界框被定义为/FontBBox[0],这显然是胡说八道。字体名称基本上是垃圾,看起来像是试图使用子集前缀是不正确的,它应该是XXXXXX+,即6个字符,然后是“+”,而不是3个字符

顺便说一句,您原始帖子中的图片的字体名称与您附加的PDF文件中的字体名称不匹配(一点也不匹配)。这意味着我不能绝对肯定这是同一个问题,但我怀疑是这样的

如果您在Adobe Acrobat中打开文件,导出到PostScript,然后尝试使用Adobe Acrobat蒸馏器从该PostScript创建PDF文件,则会抛出错误:

%%[错误:invalidfont;有问题的命令:definefont;ErrorInfo:.notdef--nostringval--]%

因此,Adobe应用程序在处理字体时也会抛出错误


我不知道您使用的字体来自何处,但您应该用更好的字体替换它们,因为这些字体已损坏。

发送字体列表的图片没有任何帮助,您需要提供PDF文件。理想情况下,还需要一份GhostScriptp后台频道的副本,这样我们就可以看到Ghostscript是否试图告诉你任何事情(例如你的字体坏了)。@KenS pdf可以使用adobe acrobat打开,而不是word online,我发现qpdf+Ghostscript可以修复它。但是gs显示pdf丢失了一些字体,所以我没有使用itext嵌入嵌入字体,当我使用ghostscript转换pdf时,一个自定义字体丢失了,我不相信你。但是任何人都不能不看文件。当面对一个问题时,每个人似乎都在寻找一个神奇的Ghostscript参数来解决他们的问题,没有这样的参数,我不知道为什么人们坚持认为有。要么你的原始文件有问题,要么你发现了一个bug。如果看不到PDF文件,我甚至不知道是哪个。照片没用。哦,您还没有给出您正在使用的Ghostscript版本或操作系统。我的第一个建议是删除pdf设置。@KenS这是我的pdf文件。“Ghostscript可能会进行字体替换,因此嵌入的字体可能与原始文件中指定的不同。”,我认为这就是问题所在。ghostscript更改了自定义字体,然后丢失了自定义字体否,仅当字体未嵌入PDF文件(或嵌入PDF文件的字体已损坏/损坏/无效)时才会进行字体替换。Ghostscript不会简要地替换字体。在本例中,它没有替换字体,根据您的图片,它根本没有嵌入fotn。我去拿文件看看。