如何将 PDF 转换为 EPS?

如何将 PDF 转换为 EPS?

我找不到将 PDF 转换为 EPS 的工具,无论是在 MikTeX 还是在 TeXLive 中。真的有这样的工具吗?


更新:

根据赫伯特接受的答案,我简化了他的批次如下:

#!/bin/sh
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

pdfcrop "$2.pdf" "$2-temp.pdf"
pdftops -f $1 -l $1 -eps "$2-temp.pdf" "$2.eps"
rm  "$2-temp.pdf"

对于 Windows 用户,创建一个批处理文件,并将其命名pdf2eps.bat为:

rem pdf2eps <page number> <pdf file without ext>
echo off
pdfcrop "%2.pdf" "%2-temp.pdf"
pdftops -f %1 -l %1 -eps "%2-temp.pdf" "%2.eps"
del  "%2-temp.pdf"

答案1

这是一个Linux脚本pdf2eps。它可以轻松地转换为Windows的批处理脚本。

#!/bin/sh
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# usage:
# pdf2eps <page number> <pdf file without ext>

pdfcrop $2.pdf
pdftops -f $1 -l $1 -eps "$2-crop.pdf" 
rm  "$2-crop.pdf"
mv  "$2-crop.eps" $2.eps

答案2

提供这样的工具不是 TeX 发行版的任务。您需要使用外部工具。

其中有几个应该能够将 PDF 转换为 EPS,有时需要先经过 PS。

我可以推荐以下 3 种可以给我带来良好效果的工具:

  • Inkscape(矢量图形编辑器,免费且多平台)

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

inkscape input.pdf --export-eps=output.eps

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

    acroread -toPostScript input.pdf
    ps2eps input.ps
    
  • Ghostscript(多平台)
    注意:-dNOCACHE需要防止 GhostScript 栅格化字体。 eps2write以前用作epswrite

    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输出。

并且很可能还会有更多。

答案3

我尝试了很多方法,包括使用 Inkscape 进行转换和使用启用了 eps 标志的 pdftops。这两种方法在某些字体上都存在问题。在线工具和 ImageMagick 都以不可接受的方式对图像进行栅格化。

我发现最有效的转换过程是分两步进行:首先使用 pdftops 将 .pdf 转换为 .ps,这样可以保留字体,并且不会光栅化图像。接下来,使用 ps2eps(TeXLive 发行版附带)将 .ps 转换为 .eps。

我用来执行此操作的 bash 脚本:

#!/bin/bash
# Convert PDF to encapsulated PostScript
# usage: pdf2eps <filename.pdf>

# Remove .pdf extension from input
filename=$(echo $1 | sed 's/.pdf//')
# Convert into .eps
pdftops $filename.pdf $filename-temp.ps
ps2eps $filename-temp.ps
mv $filename-temp.eps $filename.eps
rm $filename-temp.ps

答案4

我认为将 PDF 转换为 eps 文件的最佳方法是使用传统的 PDF 阅读器(Acrobat 或 Okular)将 PDF 打印为扩展名为 eps 的文件。更具体地说,我使用了打印对话框窗口中的常用选项“打印到文件”,并将目标文件的扩展名更改为 eps。我试过了,效果很好,并且在很大程度上保留了文档的质量。

相关内容