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

时间:2015-03-02 23:30:25

标签: matlab vector ghostscript postscript eps

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

我正在寻找与OSX兼容的东西,但是会适合Windows。我知道EPSViewer.org但它只能在像素中工作,并限制尺寸成比例。

1 个答案:

答案 0 :(得分:3)

您可以使用 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,请gsgswin32c.exe替换gswin64c.exe。)

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

以下是缩放工作的证据。通过使用-sDEVICE=bbox运行Ghostscript,您可以获得EPS文件的 计算 BoundingBoxes,它们定义了将绘制实际像素的矩形:

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

您还可以使用它以“液体”方式进行缩放,而不通过向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。