Ghostscript - 嵌入字体,无法让它工作

时间:2017-10-03 06:14:48

标签: pdf ghostscript

我无法在ghostscript输出的pdf中嵌入字体。 我的主要方法是将pdf分成半宽,所以我最初使用了以下命令:

 gs -o left_sections.pdf -sDEVICE=pdfwrite -dAutoRotatePages=/None -g17700x6120 -c "[/CropBox [0 0 1770 6120] /PAGES pdfmark" -dFIXEDMEDIA -c "<</PageOffset [0 0]>> setpagedevice" -f page.pdf

我的初始命令工作正常,直到我遇到1个缺少瑞典特殊字符(Å)的pdf,所以我发现我可以添加-dPDFX参数以使所有字体都包含在pdf中

 gs -o left_sections.pdf -sDEVICE=pdfwrite -dPDFX -dAutoRotatePages=/None -g17700x6120 -c "[/CropBox [0 0 1770 6120] /PAGES pdfmark" -dFIXEDMEDIA -c "<</PageOffset [0 0]>> setpagedevice" -f page.pdf

到目前为止一切顺利。 除了最后,我需要将所有字体转换为轮廓。 (使用-dNoOutputFonts) 我注意到的是,如果pdf包含一个SMASK(我无法控制它),实际页面被转换为图像,并且特定页面可以理解不能转换为轮廓,因为它现在是一个图像。所以我不能使用-dPDFX参数。

我想我已经尝试过我发现的不同组合中的所有可能的论点。

-dPDFSETTINGS=/prepress
-dPDFSETTINGS=/printer
-dPDFA
-dEmbedAllFonts=true
-c "<</NeverEmbed []>> setdistillerparams"
-dSubsetFonts=true

我做错了什么?

编辑:其他信息 我在Mac OSX 10.10.5上使用Ghostscript 9.21 .. 我试图分割的pdf是https://nofile.io/f/dxJQh2bDNOv/page.pdf 我的第一个命令的结果是 https://nofile.io/f/NZHMhRUwNEe/left_sections.pdf

最诚挚的问候 NiclasRådström

1 个答案:

答案 0 :(得分:0)

好的第一点;你没有将PDF文件分成两半。您正在创建一个新的PDF文件,其内部内容不会与原始内容相同,设备的唯一目标是它应该在视觉上与输入相同。

指定PDF / X时呈现页面的原因是因为PDF / X规范不允许使用透明度(SMask是透明操作)。因此,获得视觉上正确输出的唯一方法是将内容呈现给图像。所以不要这样做。

同样,除非您需要这种格式,否则不应使用PDFA或任何其他此类格式。

关于嵌入字体,pdfwrite设备默认嵌入所有字体。如果缺少字体,则它将使用默认字体。

如果没有看到引起问题的原始PDF文件(Aring字形问题),就无法说出你做错了什么(如果有的话)。如果你想在某个地方发布信息,以及你正在使用哪个版本的Ghostscript,在什么操作系统上以及从哪里获取它,那么我可以看一下。

但是,我的建议是不使用PDFX或PDFA,因为这会导致输出文件的功能受到限制。