我使用Matlab生成EPS(Encapsulated PostScript)文件。我想调整这些文件的大小,使它们的渲染大小与生成的大小不同。我想以英寸或厘米为单位指定调整大小的尺寸,理想情况下。是否可以使用免费软件或命令行实用程序执行此操作?
我正在寻找与OSX兼容的东西,但是会适合Windows。我知道EPSViewer.org但它只能在像素中工作,并限制尺寸成比例。
答案 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,请gs
或gswin32c.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。