始终能够读取 .eps 文件,现在无法打开/转换此特定文件

始终能够读取 .eps 文件,现在无法打开/转换此特定文件

我正在尝试打开一个.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应该相当不言自明。

相关内容