如何使用免费软件或命令行实用程序调整 EPS 文件的大小

How to resize an EPS file with free software or command line utility

我使用 Matlab 生成 EPS (Encapsulated PostScript) 文件。我想调整这些文件的大小,以便它们以与生成时不同的大小呈现。理想情况下,我想以英寸或厘米为单位指定调整后的尺寸。是否有使用免费软件或命令行实用程序执行此操作的选项?

我正在寻找与 OSX 兼容的东西,但会满足于 Windows。我知道 EPSViewer.org 但它只能以像素为单位工作,并将尺寸限制为成比例。

您可以使用 Ghostscript(自由软件 + 命令行实用程序,随心所欲)。

可用于 Linux、Windows 和 Mac OS X。

确保拥有包含 eps2write 设备的最新 Ghostscript 版本(v9.15 或更高版本)。 (检查 gs -h | grep --color=auto -E '(epswrite|eps2write)' 你有哪一个。)

预编译的二进制文件可用于 Linux 和 Windows 此处:

然后,要在保持宽高比的同时将 input.eps 缩放到 50%,您可以 运行 此命令:

gs                                                \
  -o scaled.eps                                   \
  -sDEVICE=eps2write                              \
  -c "<</Install {0.5 0.5 scale}>> setpagedevice" \
  -f input.eps

(对于 Windows,将 gs 替换为 gswin32c.exegswin64c.exe。)

-c "..." 命令行参数允许您添加将在 Ghostscript 处理输入文件时执行的 PostScript 代码片段。在上面的示例中,它缩放了输入页面。

这是缩放有效的证据。通过 运行ning Ghostscript 与 -sDEVICE=bbox 你得到 computed EPS 文件的边界框,它定义了实际位置的矩形像素将被绘制:

gs -q -o -sDEVICE=bbox input.eps 
  %%BoundingBox: 41 19 585 831
  %%HiResBoundingBox: 41.990975 19.997999 584.027982 830.009014

gs -q -o -sDEVICE=bbox scaled.eps 
  %%BoundingBox: 20 9 293 416
  %%HiResBoundingBox: 20.991023 9.990000 292.013991 415.008972

您还可以使用它以 "liquid" 的方式进行缩放,而无需通过向 scale 运算符提供不同的参数来保留纵横比。不幸的是,我不能让你自己计算相应的数字。 (我们也可以在 PostScript 中做到这一点,并给出一个命令行,您可以在其中插入所需的尺寸 inch,但这会使命令行太长。询问是否仍然需要它,然后我相应地更新这个答案...)

我用它把 EPS 从 A4 纵向缩放到 A4 横向:

gs                                                      \
  -o A4-landscape.eps                                   \
  -sDEVICE=eps2write                                    \
  -c "<</Install {1.4151 0.7066 scale}>> setpagedevice" \
  -f A4-portrait.eps

以下是我使用的输入输出文件的截图:

  • A4-portrait.eps(输入)是对的。
  • A4-landscape.eps(输出)还剩


对于OS X,您可能会想通过MacPorts获取Ghostscript。一旦你安装了基础 MacPorts,它就很简单了:

sudo port -pf install ghostscript

安装它(包括所有依赖项)。

但是,请注意: MacPorts 当前仅提供 Ghostscript v9.10。该版本还不包括 eps2write 设备。如果您使用 GS 9.10,则只能使用 epswrite——但这有一个缺点,即只能发出 PostScript Level 1,这可能会使生成的缩放 EPS 严重像素化。