[webkit-dev] a question on printing: whither WSIWYG?
peliom at tikirobot.net
peliom at tikirobot.net
Sun Oct 8 09:33:41 PDT 2006
On Oct 8, 2006, at 8:09 AM, Mike Emmel wrote:
> On 10/8/06, Allan Sandfeld Jensen <kde at carewolf.com> wrote:
>> All this boils down to is two different ideas of printing really:
>> 1. Print as specified in CSS. This typically produces better
>> output in pages
>> that have been designed for printing.
>> 2. Print screenshot. This produces an exact print of what is seen
>> on the
>> screen. This produces worse results in some cases due to page-
>> problems etc.
>> 1 is nice for printing papers, but 2 is what most users expect.
>> A choice like this "should" be available in a print dialog.
> 3.) Print with a user specified css stylesheet.
> Default choices would be the screen style sheet and the style sheet
> for printing defined by the page author.
> A user specifed style sheet when printing allows you to get it
> just right tm.
These are interesting features, but they miss my original point. It
is my own fault, I have been debugging this situation and so didn't
give enough context: My code is calling the NSView API:
[webview dataWithPDFInsideRect:[webview frame]]
Perhaps now my request makes a bit more sense: this API does not say
anything about printing, either in the API itself or its
documentation. As a developer I am expecting a PDF representation of
the WebView (emphasis on "view" here)
Obviously WebKit is using it's printing subsystem to generate this
PDF, which is entirely reasonable except for the fact that when
WebKit is generating PDF, it apparently assumes the PDF is being sent
directly to a printer. This is not necessarily the case, and
dataWithPDFInsideRect looks terrible if the site author has
mislabeled their CSS as media="screen". Regardless, my expectation
as a developer is that dataWithPDFInsideRect *is* screen media.
My application is not printing at all. I am creating PDF
representations of web pages for a browser that caches the
representations. These PDF representations consume very little RAM,
and have the added advantage of loading into a view quickly. A PDF
representation loads into a PDFView in a fraction of a second. I
started out using WebArchives, but realistically a typical web page
takes 1-4 seconds before it is fully loaded even if it is in
WebArchive format. A lot of web sites use "no-cache" (for whatever
reason), and there are often other dependent resources,
So hopefully the problem I am running into makes more sense now. I
was asking about printing because dataWithPDFInsideRect was giving
the same result as printing with Safari, hence I assumed at first
there is a bug with Safari/WebKit printing.
Now I am just looking for API, public or private, to turn off this
media="screen" business so I can get on with my application. And you
guys are going to love my next question :-)
PDF format supports hyperlinks, so I am wondering why
dataWithPDFInsideRect doesn't preserve hyperlinks? Is there is a
technical reason or is this just a feature that hasn't been
implemented yet? The API CGPDFContextSetURLForRect() does exists, so
it seems like this should be possible.
More information about the webkit-dev