从 PDF 转换为 EPS,同时保留/勾勒字体

从 PDF 转换为 EPS,同时保留/勾勒字体

情况: 我有一个使用 tikz/pgf 和 Inkscape 组合生成的 PDF 文件。它包含所有正确嵌入的字体。可以下载这里。例如,使用

pdffonts correct.pdf 

给出

name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
UWTJCQ+CMR9                          Type 1            yes yes no      38  0
JXYBIE+CMR10                         Type 1            yes yes no      42  0
VUTWNB+CMMI10                        Type 1            yes yes no      46  0
DDXSBZ+CMR6                          Type 1            yes yes no      50  0
VNIEYM+CMSY9                         Type 1            yes yes no      58  0
UJXQAK+CMR8                          Type 1            yes yes no      54  0
AEBRGF+CMMI9                         Type 1            yes yes no      62  0

目标:有人要求我将此 pdf 更改为 eps(用于期刊出版)。我想使用两个版本进行此操作:

  1. 轮廓字体
  2. 嵌入字体

最终的 eps 应该有正确的边界框

轮廓字体的尝试:

Maarten 的解决方案这里以及 StackExchange 人员这里提出了使用 GhostScript 的解决方案:

gs -dNOPAUSE -dNOCACHE -dBATCH -sDEVICE=epswrite -sOutputFile=your-output-file.eps  your-source-file.eps

这似乎有效。字体在屏幕上看起来很糟糕,但打印似乎正确。

嵌入字体的尝试:导游这里建议以下命令将 pdf 转换为 eps,然后调整边界框使用嵌入字体. 命令如下

pdftops -eps test.pdf
cat test.eps | ps2eps > test2.eps

然后可以将最终输出转回 pdf 格式并验证嵌入的字体

ps2pdf test.eps
pdffonts test.pdf

但是,我尝试了上述文件,结果不起作用。使用 pdftops 创建了一个 eps,然后将 eps 改回 pdf,但字体消失了(使用 pdffonts)。有人能告诉我如何从 pdf 更改为 eps 并保留嵌入的字体吗?

更新

Lev Bishop(见下文)发现 PDF 中存在透明胶片,这导致 pdftops 将图像光栅化。在追踪透明问题的过程中,我发现 2010 版 pdflatex(或 pdflatex 调用的其他程序)中有一个非常奇怪的错误。

获取带有嵌入字体的 PDF 图像。然后使用

\includegraphics{image.pdf}

生成的 PDF 似乎具有透明度,具体取决于使用的是 texlive2009、texlive2010 还是 texlive2011!使用 2009 版本,生成的图像很好,没有任何透明度。使用 2010 版本会产生透明度,而使用 2011 版本会产生没有透明度的图像。

笔记:我没有直接的方法来检查透明胶片,所以我只是使用

pdftops file.pdf test.eps
ps2pdf test.eps test.pdf

然后检查 test.pdf 是否有嵌入字体。因此,2010 版本没有嵌入字体,而 2009 和 2011 版本则运行正常。

答案1

两点:1)根据 Acrobat Pro,您的文件使用透明度。请参阅这个答案为什么 pdftoeps 不能正确地将其转换为 eps,而是将其栅格化。因为看起来这个图并没有真正要求透明度,而是您执行的一些预处理步骤将所有内容都放入了透明度组中,您应该能够修复此问题。 2) 与 ps2eps 相比,我通常更喜欢 epstool。 要更正边界框(如果有必要,但这里不应该有边界框),您可以使用epstool --copy --bbox filetocorrect.eps correctedfile.eps

相关内容