我确实有一个pdf生成管道,最后ghostscript(Linux)被调用以结束PDF(输入ps)。 PDF必须尽可能小,因此使用的一般命令行是
ps2pdf13 -dSAFER -dPDFSETTINGS=/default -dEmbedAllFonts=false -dNoOutputFonts -dFastWebView infile outfile
生成好的PDF文件而不包含所需的字体,假设目标系统应该使用它们必须替换的任何内容。是的,这可能意味着不同的系统确实使用稍微不同的字体,因此看起来不同。
大多数情况下,PDFs属性中列出了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会抱怨" Font 无法找到Helvetica-Narrow"。蒸馏器一个工作。 我不明白。它是相同的列表,至少对于那种字体。
显然它看起来很糟糕。
一种解决方案是嵌入字体。然后字体列表变成
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
并且文件大小增加了一个负载,我们要避免。蒸馏器 显示它可能,但不是如何。
答案 0 :(得分:0)
不,您无法为缺失的字体定义替代字体,这完全取决于查看者。无论如何它会有什么帮助?如果您定义的替代品对观众不可用,那么无论如何它都必须回归到自己的替代,或者完全失败。
您的命令行上有一些评论:
如果您使用的是-dNoOutputFonts
,那么您的PDF文件根本不应包含任何字体或字体引用。它也会(相当大)比禁用字体嵌入更大,并且可能比嵌入了子集字体的相同PDF更大,因为所有文本都将作为路径数据包含在内,即使是适量的文本,路径数据的重复也会超过字体大小。
很难看出你是如何设法制作一个最终引用字体的文件,但不包括字体。
您不需要指定-dPDFSETTINGS=/default
,因为这是默认值...
如果您想要一个较小的文件,请不要指定生成线性PDF文件的-dFastWebView
,该文件比非线性化文件更大(因为格式)。很少有观众尊重它,即使是那些只能加速第一页视图的观众,如果文件非常小,那么它毫无意义,因为整个文件的到达时间与线性化文件的早期部分一样快。
将版本强制为1.3可能会使文件大小变大,至少在将来会如此。