【问题标题】:Ghostscript should not embed font but only list a substituteGhostscript 不应嵌入字体,而应仅列出替代字体
【发布时间】:2018-01-03 05:16:44
【问题描述】:

我确实有一个 pdf 生成管道,最后会调用 ghostscript (Linux) 以生成 PDF(输入 ps)。 PDF必须尽可能小,所以使用的通用命令行是

ps2pdf13 -dSAFER -dPDFSETTINGS=/default -dEmbedAllFonts=false -dNoOutputFonts -dFastWebView infile outfile

生成漂亮的 PDF 文件,但不包含所需的字体,假设目标系统应该使用它们必须替换的任何内容。是的,这可能意味着不同的系统确实使用略有不同的字体,因此会得到不同的外观。

大多数情况下,PDF 属性中列出了 7 种不同的字体。在 Linux 上运行良好。

Windows (Acrobat Reader) 抱怨其中一个字符丢失,然后不呈现任何字符。

我知道我可以让 gs 嵌入字体,但会使 PDF 大小增加 50%。希望避免这种情况(虽然它大约 6000 字节,但每次运行都会乘以大约 30000 倍,因此也很重要)。

我希望有一种方法可以在 PDF 中“嵌入”“For Font Helvetica-Narrow 只需使用 Arial Narrow”(或类似内容)的信息。

存在吗?

[编辑]

抱歉回复晚了,忙。 :(

好吧,好吧。我正在考虑字体选择的可能选项列表。此外,从这种方式出发,问题可能会走错路。

选项,顺便说一句,确实有不同的大小,虽然它似乎是 -dEmbedAllFonts 一个负责大小,-dNoOutPutFonts 实际上似乎没有任何作用。

我必须与我们尝试替换的(非常旧的)蒸馏器进行比较,并使用 pdffonts,我得到以下表格:

psp2df:

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica-Narrow                     Type 1            Custom           no  no  no      11  0
Helvetica-Bold                       Type 1            Custom           no  no  no       9  0
Helvetica-Narrow-Bold                Type 1            WinAnsi          no  no  no      13  0
Courier                              Type 1            Custom           no  no  no      15  0
Courier-Bold                         Type 1            Standard         no  no  no      10  0
Helvetica                            Type 1            Custom           no  no  no       8  0
Times-Italic                         Type 1            Standard         no  no  no      21  0

蒸馏器:

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica                            Type 1            Custom           no  no  no       4  0
Helvetica-Bold                       Type 1            Custom           no  no  no       5  0
Courier                              Type 1            Custom           no  no  no       6  0
Courier-Bold                         Type 1            Custom           no  no  no       7  0
Helvetica-Narrow                     Type 1            Custom           no  no  no       8  0
Helvetica-Narrow-Bold                Type 1            Custom           no  no  no       9  0
Times-Italic                         Type 1            Custom           no  no  no      15  0

使用 ps2pdf 创建的 PDF 文件 Acrobat Reader 抱怨“字体 Helvetica-Narrow can't be found”。蒸馏器工作。 我不明白。这是同一个列表,至少对于那个字体而言。

显然它看起来很糟糕。

一种解决方案是嵌入字体。然后字体列表变成了

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
XVQNWP+Helvetica-Narrow              Type 1C           Custom           yes yes no      11  0
Helvetica-Bold                       Type 1            Custom           no  no  no       9  0
LBTZEH+Helvetica-Narrow-Bold         Type 1C           WinAnsi          yes yes no      13  0
Courier                              Type 1            Custom           no  no  no      15  0
Courier-Bold                         Type 1            Standard         no  no  no      10  0
Helvetica                            Type 1            Custom           no  no  no       8  0
Times-Italic                         Type 1            Standard         no  no  no      21  0

并且文件大小会增加负载,这是我们想要避免的。蒸馏器 展示了它的可能,但不是如何。

【问题讨论】:

    标签: pdf fonts ghostscript


    【解决方案1】:

    不,您不能为缺少的字体定义替代字体,这完全由查看者自行决定。无论如何它会有什么帮助?如果您定义的替换对查看器不可用,那么无论如何它都必须退回到自己的替换,或者完全失败。

    命令行上的几个 cmets:

    如果您使用的是-dNoOutputFonts,那么您的 PDF 文件根本不应包含 任何 字体或字体参考。它也将(显着)大于禁用字体嵌入,并且可能大于嵌入子集字体的相同 PDF,因为所有文本都将作为路径数据包含在内,即使是中等数量的文本,路径数据的重复也会超过字体大小。

    很难看出您是如何设法生成一个最终引用字体但不包含该字体的文件。

    您无需指定-dPDFSETTINGS=/default,因为这是默认设置...

    如果您想要一个较小的文件,请不要指定-dFastWebView,它会生成比非线性文件更大(由于格式原因)的线性化 PDF 文件。很少有观众尊重它,即使那些这样做也只能加速第一页浏览,如果文件非常小,它毫无意义,因为整个文件将与线性化文件的早期部分一样快。

    将版本强制为 1.3 也可能会使文件大小变大,至少在未来是这样。

    【讨论】:

      猜你喜欢
      • 2013-12-26
      • 2017-01-03
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2011-06-24
      相关资源
      最近更新 更多