[Image-SIG] language lawyer needed: PIL fails on Adobe Illustrator EPS...

Bill Janssen janssen at parc.com
Sat Mar 20 23:13:10 CET 2010


I think I need a language lawyer.  I'm finding that PIL 1.1.7 can't
import EPS files output by Adobe Illustrator.  It chokes on the
following sequence of lines in the header:

%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(R) 8.0
%%AI8_CreatorVersion: 13.0.0
%%For: (Administrator) ()
%%CreationDate: 8/20/2008 6:47 PM
%%BoundingBox: 0 0 2801 2801
%%HiResBoundingBox: 0 0 2800.5 2800.5
%%DocumentProcessColors: Cyan Magenta Yellow Black
%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
%%+ procset AGM_Gradient 1.0 0
%%+ procset Adobe_ColorImage_AI6 1.3 0
%%+ procset Adobe_Illustrator_AI5 1.3 0
%%+ procset Adobe_pattern_AI5 1.0 0
%%+ procset Adobe_cshow 2.0 8
%%+ procset Adobe_shading_AI8 1.0 0
%AI5_FileFormat 4.0
%AI3_ColorUsage: Color
%AI3_IncludePlacedImages
[...]

When I look at it with pdb, the problem seems to be the %AI5 and %AI3
lines -- they don't match the header line template, though I believe
they are valid Postscript comments:

(Pdb) !Image.open("/project/uplib/samples/postscript/badfoo.eps")
!Image.open("/project/uplib/samples/postscript/badfoo.eps")
*** IOError: bad EPS header
(Pdb) l
201  	                    if k[:8] == "PS-Adobe":
202  	                        self.info[k[:8]] = k[9:]
203  	                    else:
204  	                        self.info[k] = ""
205  	                else:
206  ->	                    raise IOError, "bad EPS header"
207  	
208  	            s = fp.readline()
209  	
210  	            if s[:1] != "%":
211  	                break
(Pdb) p s
'%AI3_ColorUsage: Color'
(Pdb) field
<_sre.SRE_Pattern object at 0x4798a0>
(Pdb) field.match(s)
(Pdb) ^D

So, are Postscript comments allowed in the DSC headers?  That is, is
this a PIL bug or an Illustrator bug.

Bill


More information about the Image-SIG mailing list