[cairo] PDF Issue in OS X Preview
Behdad Esfahbod
behdad at behdad.org
Wed Oct 25 18:41:20 PDT 2006
On Wed, 2006-10-25 at 21:24 -0400, Behdad Esfahbod wrote:
> On Wed, 2006-10-25 at 18:28 -0400, Ryan Schmidt wrote:
> > On Oct 25, 2006, at 11:55, Ken Treis wrote:
> >
> > > I'm generating PDFs using the Ruby bindings and cairo-1.2.4.
> > > Everything works fine for me until I try to set scaling. The
> > > resulting PDF files look fine in Acrobat Reader but not in OS X
> > > Preview.
> >
> > [snip]
> >
> > Thanks for writing. I too reported a problem with cairo-generated
> > PDFs which looked fine in Adobe Reader but not OS X Preview. I'm not
> > sure if your case is the same as the one I was seeing. My problem was
> > that my PDFs are generated by graphviz, and I was unsure if the
> > problem was in cairo, graphviz, or Mac OS X's PDF renderer. Your
> > message gives me hope that it might be a cairo problem after all.
> >
> > Unfortunately we didn't get very far in trying to solve the problem I
> > reported:
> >
> > http://lists.freedesktop.org/archives/cairo/2006-July/007344.html
> >
> > I did get far enough to see that it looks like Preview *is* rendering
> > the missing curves, just not at the desired offset:
> >
> > http://lists.freedesktop.org/archives/cairo/2006-July/007463.html
> >
> > Note that the glyph difficulties reported in the latter mail have
> > already been resolved in the current version of cairo; only the curve
> > offset problem remains for me.
> > http://cairographics.org/cgi-bin/mailman/listinfo/cairo
>
> This is a bug in cairo. The generated PDF output from cairo:
>
> 10 M 100 100 m 100 200 l q 2 0 0 2 0 0 cm
> S Q
>
> is undefined according to the PDF spec version 1.6. According to Figure
> 4.1 Graphics Objects on page 167, all gstate manipulations should occure
> before path construction that should be followed by path-painting
> operations. It further clarifies on the following page:
>
> "Note: A content stream whose operations violate these rules for
> describing graphics objects can produce unpredictable behavior, even
> though it may display and print correctly."
>
> and:
>
> "A graphics object also implicitly includes all graphics state
> parameters that affect its behavior. For instance, a path object depends
> on the value of the current color parameter at the moment the path
> object is defined. The effect is as if this parameter were specified as
> part of the definition of the path object."
>
>
> Simply moving the cm operator before path construction should fix it:
>
> 10 M q 2 0 0 2 0 0 cm 100 100 m 100 200 l
> S Q
>
>
> Any takers?
Should be fixed now, in this commit:
e1ded5b1e042c8cefa7f136228d5a63a7bdf84b5
--
behdad
http://behdad.org/
"Commandment Three says Do Not Kill, Amendment Two says Blood Will Spill"
-- Dan Bern, "New American Language"
More information about the cairo
mailing list