我正在尝试打开一个.eps
文件,但无法打开:我尝试的每个阅读器都冻结了,即使.eps
之前打开过其他文件。我尝试使用gimp
,它通常会打开任何文件,但它返回错误:
Opening "file.eps" has failed: impossible to open postscript file "file.eps"
然后我尝试将convert
文件复制到 a .png
,希望能够打开它。但是convert
命令也给出了错误:
$ convert file.eps file.png
convert: not authorized `file.eps' @ error/constitute.c/ReadImage/412.
convert: no images defined `file.png' @ error/convert.c/ConvertImageCommand/3210.
我阅读此处修改/etc/ImageMagick-6/policy.xml
文件可能是可行的方法,但我不确定这是否适合我的情况。
编辑:该文件已附加到电子邮件中,我可以从另一台装有 Photoshop 的机器上下载并打开它,也可以在我的手机上使用 EPS Viewer 应用程序打开它。文件没有问题,没有损坏。
答案1
在 Ubuntu 16.04.4 LTS 上,只需注释/删除下面标记的行即可/etc/ImageMagick-6/policy.xml
。就在<!-- disable ghostscript format type -->
删除这些行之后。
<policymap>
...
<!-- disable ghostscript format types -->
<!-- comment or remove the lines below
<policy domain="coder" rights="none" pattern="PS" />
<policy domain="coder" rights="read|write" pattern="EPS" />
<policy domain="coder" rights="none" pattern="PDF" />
<policy domain="coder" rights="none" pattern="XPS" />
-->
</policymap>
正如您在问题中链接的答案。
答案2
正确的解决方案不是将更改恢复为 ImageMagick。
在 Ghostscript 的沙盒中的错误被修复后,该问题被保留为“为什么我们要让任意的 Web 应用程序在沙盒中运行像 Postscript 这样的图灵完备编程语言,而他们却懒得验证上传的文件的真实性?是扩展所说的格式?”
delegates.xml
相反,当您确实想要渲染 Postscript 时,只需直接转到 ImageMagick 配置文件中指定的 Ghostscript 命令。
这是您需要的 EPS 到 PNG 命令的清理版本:
gs -dSAFER -dEPSCrop -r600 -sDEVICE=pngalpha -o file.png file.eps
-dSAFER
你总是想要。没有它,Ghostscript 甚至不会尝试对 Postscript 进行沙盒处理,并且由于传统兼容性原因,默认情况下它处于关闭状态。-dEPSCrop
是可选的。它告诉 Ghostscript 将输出裁剪为实际内容,而不是渲染输入文件指定的整个页面。-r600
指定 DPI,从而指定输出大小。(EPS 文件指定的英寸乘以每英寸点数等于像素尺寸。默认值通常为 72 dpi。)-sDEVICE=pngalpha
指定输出格式。之所以这样称呼,是-sDEVICE
因为写入文件就像“打印为 PDF”驱动程序一样。有多种的有多种输出驱动器可供选择。-o file.png
是简写,-dBATCH -dNOPAUSE -sOutputFile=file.png
应该相当不言自明。