[cairo] writing multiple surfaces to a single (pdf) file
Andrea Canciani
ranma42 at gmail.com
Mon Nov 7 00:29:06 PST 2011
2011/11/7 Zoltán Vörös <zvoros at gmail.com>:
> Many thanks for the fast feedback!
>
>> cannot find any short sample that uses them... I hope the documentation is
>> sufficient (The simplest reference I can provide is:
>> http://cgit.freedesktop.org/cairo/tree/test/multi-page.c#n106 )
>
> Well, this is/was actually the problem: I did read the docs, but it is
> completely unclear to me what one is supposed to do. At the moment, I have
> this
The issue in your code is that you're doing all the drawing before
calling the *_page() methods.
In addition to this, I believe that calling show_page() should be
sufficient for your use case.
Can you please your code with the following changes?
surface = cairo.PDFSurface('pdffile.pdf', 504, 648);
cr = cairo.Context(surface)
cr.set_source_surface(self.surface, 0, 0)
cr.paint()
cr.show_page() # show the first page
self.page += 1
self.path = self.pages[self.page] # we
show another page
self.draw_note(self.widget('draw'), self.path) # This
redraws the surface on gtk drawable, which is self.surface
cr.set_source_surface(self.surface, 0, 0)
cr.paint() # don't forget to paint(), setting a source does
not change the surface content
cr.show_page() # show the second page
Andrea
>
> and it does print two pages to the pdf file, but the two pages are the same.
> I can't get the second page to the file, though it is painted properly on
> the self.surface, so I can it in the gui.
> Well, any hints would be appreciated.
> Cheers,
> Zoltán
>
More information about the cairo
mailing list