情况: 我有一个使用 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(用于期刊出版)。我想使用两个版本进行此操作:
- 轮廓字体
- 嵌入字体
最终的 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
。