高质量的PDF转EPS

29
我一直使用latex的pgfplot来生成图形(.pdf格式)。现在,我想要发表论文的期刊要求我的图片必须是eps格式。 我尝试使用pdftops -eps fig.pdf fig.eps将pdf转换为eps,但生成的eps文件质量很差。
原始图形(以.pdf格式): enter image description here 转换后的图形(以.eps格式): enter image description here 请问生成与输入pdf文件质量相同的eps文件正确的步骤是什么?
编辑: 按照PooyaRaki的建议: Inkscape选项输出(.eps) enter image description here Ghostscript选项(.eps格式) enter image description here Acrobat阅读器选项输出(.ps格式) enter image description here 在这三个选项中,Acrobat Reader似乎是最好的。

实际上,看起来Ghostscript产生了最好的结果,因为Acrobat Reader改变了颜色。 - Dmitry Kabanov
GSView也可以通过点击“转换”,然后选择“ps2write”和“600”分辨率来工作。我很欣慰,因为我要提交一篇需要EPS图形的PRL手稿,而我不太熟练使用TeXstudio在那里修改生成的pdf文件为eps格式(尽管我已经读到这是它的默认设置?)。Thomas - Thomas
我用 Ipe 得到了很好的结果:http://ipe.otfried.org/ - Erel Segal-Halevi
1
很让人惊讶的是,没有一种被推荐的工具能够无问题地转换这个图像。如果没有办法使用它来生成可接受质量的图片,那还有人需要这种格式的图片吗? - Fido
2个回答

31
我推荐以下工具:
  • Inkscape(矢量图形编辑器,免费且跨平台)

    可以使用GUI(打开PDF,另存为EPS)或使用命令行(仅在Linux下测试):

    inkscape input.pdf --export-eps=output.eps
    
  • Acrobat Reader(Linux版本)+ ps2eps(TeXLive)

    acroread -toPostScript input.pdf
    ps2eps input.ps
    
  • Ghostscript(跨平台)注意:需要使用-dNOCACHE以防止GhostScript对字体进行光栅化。

    gs -q -dNOCACHE -dNOPAUSE -dBATCH -dSAFER -sDEVICE=eps2write -sOutputFile=output.eps input.pdf
    

还有以下工具。我没有测试过它们中的所有工具,有些可能不支持字体 :-( !

  • ImageMagick convert(可能会使用Ghostscript本身。手动调用它更灵活,可能会避免问题。convert实际上可能会将PDF转换为光栅图!)

    convert input.pdf output.eps
    
  • pdf2ps(使用Ghostscript)+ ps2eps(随TeXLive一起提供)

  • pdftops(poppler的一部分),使用-eps开关进行EPS输出。

请注意,EPS格式不支持透明度!

2
inkscape选项效果不佳-文本无法正确渲染,而Ghostscript选项会报错,提示未知设备:epswrite。 然而,acrobat reader选项可行。缺点是它会使颜色变暗(.ps格式)。 - Rhinocerotidae
1
@SaravanaKumar,epswrite已经过时,请在更新版本中尝试使用eps2write - user3677687
1
pdf2ps 应该使用选项 -eps -level3,这样它会生成更高质量的 eps 文件。 - Dmitry Kabanov
1
@DmitryKabanov 我使用Ghostscript 9.22的pdf2ps命令时收到“未知开关-eps - 忽略”和“未知开关-level3 - 忽略”的错误提示。你是不是想用pdftops命令?使用pdftops命令后,选项可以正常工作,但生成的图像质量仍然很低。 - 0range
inkscape是最好的。 - John
显示剩余4条评论

-3

上一个回答很好,但ImageMagick不一定会将PDF转换为光栅图。 您可以使用以下命令: convert -density 600x600 inpute.pdf -quality 90 output.eps


5
Imagemagick总是将矢量输入转换为光栅图像。即使使用@WenZhou的命令,也无法在Imagemagick中将矢量转换为矢量。 - fmw42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接