PS/PDF API Change Proposal: (Re: [cairo] Semantics of transparent
objects)
Michael Sweet
mike at easysw.com
Fri Feb 10 04:40:14 PST 2006
Carl Worth wrote:
> On Wed, 18 Jan 2006 20:01:04 -0500, Michael Sweet wrote:
>> Carl Worth wrote:
>>> ...
>>> Obviously, there _are_ a lot of printing-specific options, settings,
>>> and metadata that users will need to provide. And the point has been
>>> made above that these need to be available on a per-page basis.
>>>
>>> I'm wondering if we can't just use cairo_t for these, and specify that
>>> the time to set them is before any drawing operation on any given
>>> page. That is, just after cairo_create or cairo_show_page, and before
>>> any of cairo_stroke, cairo_fill, cairo_paint, cairo_mask,
>>> cairo_show_text/glyphs on that page.
>> That would work. IMHO, the only "required" per-page attributes are
>> the media attributes: media color (the color of the paper, not whether
>> the output is in color), page size, media source, media type, and
>> media weight.
>
> What's not clear to me yet is what cairo is supposed to do with these
> options. From the recent discussion on the desktop_printing list[*]
> it's been made quite clear that applications should emit
> printer-independent PostScript and that that should be passed along
> with printer-specific options to CUPS.
True, however that doesn't prevent inclusion of per-page options, you
just need to do it a little differently using %%IncludeFeature...
> So, cairo fits in on the PostScript-generation side of things. And if
> it should then always be generating printer-independent PostScript
> then I don't see why it should see any printer-specific settings, (or
> even what it could do with them if it shouldn't put them into the
> PostScript output).
At the very least you may want a mix of page sizes...
> Or are all the attributes you describe above printer-independent? I
> don't know for sure what you mean by "media source" for example. Is
> that the printer's paper tray? If so, that's clearly printer-specific.
Right. Maybe an example will help:
%%Page: 1 1
%%PageBoundingBox: 0 0 595 842
%%BeginPageSetup
%%IncludeFeature: *PageSize A4
%%IncludeFeature: *InputSlot LargeCapacity
%%IncludeFeature: *MediaType Glossy
%%IncludeFeature: *MediaColor White
%%EndPageSetup
The PageBoundingBox comment tells CUPS the bounding box of the page.
It is important to note that the coordinates are *integers*...
The IncludeFeature lines allow you to inject per-page options without
putting printer-specific PostScript commands in the file... They
also make sure that the options are set in the right order...
--
______________________________________________________________________
Michael Sweet, Easy Software Products mike at easysw dot com
Internet Printing and Publishing Software http://www.easysw.com
More information about the cairo
mailing list