在不使用“使用画板”的情况下将AI转换为EPS / JPEG

时间:2019-05-29 10:18:17

标签: imagemagick ghostscript adobe-illustrator

我正在尝试在Web应用程序中读取(预览)AI(adobe illustrator)文件。我的Web应用程序在Linux机器上,主要使用Python。

我找不到可以预览AI文件的任何本机python代码,因此我继续寻找解决方案并找到了ghostscript,该脚本提供了将AI转换为JPG / PNG的选项,而这些格式我都可以预览。 我遇到的问题是,我需要预览以包括整个文档,而不仅仅是画板,在illustrator中,可以在保存时从“使用画板”中删除复选框,请参见截图:https://helpx.adobe.com/content/dam/help/en/illustrator/how-to/export-svg/_jcr_content/main-pars/image0/5286-export-svg-fig1.jpg

但是当我尝试从ghostscript导出时,我无法使其工作... 根据我的理解,最好先尝试转换为EPS,然后再转换为JPG / PNG,但是我也没有这样做,并且画板之外的项目也不会显示。

在linux上,这些是我在安装ghostscript之后基本上尝试过的命令:

gs -dNOPAUSE -dBATCH -sDEVICE=eps2write -sOutputFile=out.eps input.ai

gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -sOutputFile=out.jpeg input.ai

gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -sOutputFile=out.png input.ai

如果ghostscript无法实现,而我需要imagemagick,则我不介意使用它...我尝试了10分钟,发现一堆错误,所以我把它留了下来。...

AI文件,例如:https://drive.google.com/open?id=1UgyLG_-nEUL5FLTtD3Dl281YVYzv0mUy

我想要的输出的Jpeg示例:https://drive.google.com/open?id=1tLT2Uj1pp1gKRnJ8BojPZJxMFRn6LJoM

谢谢

2 个答案:

答案 0 :(得分:0)

首先,Ghostscript在技术上完全不支持Adobe Illustrator本机文件。它们可能有效,因为它们通常是带有自定义位的PostScript或PDF文件,出于绘制内容的目的,可以忽略这些位。但这不是保证。

第二;不,请勿多次转换文件!这是一个已经进行了很长时间的查寻的神话。有时出于某些原因,通常这样做只会放大问题,而不能解决问题。真的,不要那样做。

您没有引用所得到的错误,也没有提供要查看的任何文件,因此,实际上无法确定问题所在。我不知道“画板”是什么,对不起,Illustrator对话框的图片无济于事。

也许您可以提供示例文件,也许还可以提供您所期望的图片,则可能可以弄清楚。我的猜测是,您的'.ai'文件是PDF文件,并且具有MediaBox(默认情况下Ghostscript使用的是MediaBox)和ArtBox(您实际要使用的是ArtBox)。或类似的东西。很难说出更多的信息。

[编辑]

好吧,恐怕这里的答案是,如果不使用Illustrator,就无法轻松地从该文件中获得所需的内容。

该文件是PDF文件(如果将input.ai重命名为input.pdf,则可以使用PDF阅读器打开它)。但是,Illustrator打开文件时不会使用大部分PDF文件。而是PDF文件包含“ / PieceInfo”键,这是Page字典中的键。这指向具有/ Private键的字典,(最终!)指向包含一堆Illustrator内容的字典:

52 0 obj
<<
  /AIMetaData 53 0 R
  /AIPrivateData1 54 0 R
  /AIPrivateData10 55 0 R
  /AIPrivateData11 56 0 R
  /AIPrivateData2 57 0 R
  /AIPrivateData3 58 0 R
  /AIPrivateData4 59 0 R
  /AIPrivateData5 60 0 R
  /AIPrivateData6 61 0 R
  /AIPrivateData7 62 0 R
  /AIPrivateData8 63 0 R
  /AIPrivateData9 64 0 R
  /ContainerVersion 11
  /CreatorVersion 23
  /NumBlock 11
  /RoundtripStreamType 1
  /RoundtripVersion 17
>>
endobj

这是Illustrator文件的实际保存的文件格式。您可以将PDf文件视为环绕Illustrator本机文件的“预览”。 Illustrator读取PDF文件以查找自己的数据,然后将其丢弃,并使用其中存储的本机文件格式。

问题在于文件的PDF部分根本不包含您要查看的内容。这存储在Illustrator本机数据中。 Ghostscript只是呈现PDF文件中的内容,而不查看Illustrator本机文件。

查看Illustrator私有数据,其中一些未压缩,但是大多数已压缩,它没有说明如何压缩,但是应用FlateDecode过滤器会生成一个很好的老式Illustrator PostScript文件,该文件可以使用Ghostscript。

但是您将不得不手动解析PDF文件,提取所有压缩的AIPrivateData流,将它们连接在一起,应用FlateDecode过滤器解压缩它们,然后才将结果输出发送给带有-dEPSCrop开关集的Ghostscript。这将产生您想要的输出。

但是Ghostscript和ImageMagick(通常使用Ghostscript渲染PDF文件)都不会为您做任何事情,您必须自己做。

答案 1 :(得分:0)

有关该主题的一些更新:我已经找到了:

这是AI PGF提取器,理论上应有助于从PDF提取其他数据。目前,它看起来已经很老了,并且是为win32编写的,因此我目前无法对其进行测试,但这至少是某种领先。