我正在尝试在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
谢谢
答案 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编写的,因此我目前无法对其进行测试,但这至少是某种领先。