7

有没有办法检查文件中是否有光栅元素?我有兴趣为 .pdf、.eps 和 .ai 格式执行此操作。

如果文件只是矢量,我将其转换为 .svg,如果它有一些光栅元素,我必须将其转换为 .png 文件。

我正在使用 PHP,但我也可以使用任何命令行工具。例如,我正在考虑使用 Inkscape 进行实际转换。

4

6 回答 6

5

您可以在 pdf 文件上运行此命令并检查文件上是否存在任何栅格:

  grep -c -i "/image" thisfile.pdf
于 2014-03-17T16:03:35.023 回答
1

您可以将图像转换为 EPS 格式,然后搜索“/ImageType”是否存在。“/ImageType”表示以下对象是光栅图像。如果整个 EPS 文件中不存在,则此 EPS 为矢量文件。

于 2019-02-09T00:44:09.583 回答
1

如果您是 Linux 用户,您可以使用Poppler 实用程序获取 PDF 中的光栅元素列表:

pdfimages -list filename.pdf

这将返回一个包含每个栅格信息的表: pdfimages_output

从控制台以编程方式解析这些信息应该相对简单。例如,在 Python 中,您可以使用 subprocess 模块:

out = subprocess.check_output('pdfimages -list filename.pdf', shell=True)
于 2021-02-08T11:11:35.253 回答
0

您可以在 EPS/AI 文件中搜索 DeviceRGB

于 2015-07-15T20:14:23.280 回答
0

“DisplayImage”的存在似乎表明 EPS 文件是由光栅图像制成的。'DeviceRGB' 和 '/ImageType' 解决方案不适用于我的 EPS 文件(这些指令不存在于我从带有 'convert' 的 PNG 文件制作的 EPS 文件中)。

于 2020-08-02T06:57:44.023 回答
-3

不,那里没有。

以下是 eps 的理论计算机科学证明,它证明了所要求的属性无法计算。

PostScript(ps) 和 Encapsulated PostScript(eps) 是图灵完备的编程语言。在理论计算机科学中,有证据表明用图灵完备语言编写的程序的某些属性是无法计算的。例如,这样的属性是给定程序是否曾经终止。所以我们知道存在一个无法判断它是否终止的 PostScript 程序。如果我们使用此程序,则从中删除所有光栅对象并仅插入一个光栅对象,该对象仅当且仅当程序终止时才会打印在文档上。我们通过在每个可能导致终止的程序部分上插入这个光栅打印步骤作为最后一步来做到这一点(直接在每个退出命令之前(如果存在这样的命令)和主程序的末尾)。现在我们有一个 PostScript 程序,我们无法判断它是否包括打印光栅对象。确实不能说,因为如果我们知道它是否包含打印它,我们也知道它是否终止并且我们已经知道,我们无法计算这个属性。qed

于 2011-11-23T13:59:55.487 回答