Printing Support - brainstorm.

Lubomir I. Ivanov neolit123 at
Thu Jul 18 13:57:28 PDT 2013

On 18 July 2013 23:16, Tomaz Canabrava <tcanabrava at> wrote:
> On Thu, Jul 18, 2013 at 5:14 PM, Tomaz Canabrava <tcanabrava at> wrote:
>> Heya.
>> let's brainstorm a bit. :)
>> The current way that lubomir programmed the Printing support seems to be a
>> no-go because it's damn-slow.
>> the problem seems to be with QTextDocument parsing of HTML, but if we use
>> QTextCursor to manipulate the QTextDocument, the time goes down from 15s to
>> 2, with is mostly-acceptable. *but* that broke CSS. I'v tried to follow Qt
>> guidelines on QTextDocument but that was unfruitfull - the doc seems to be
>> wrong there ( or I didn't understand what it was saying, and since english
>> is not my first language this is always a possibility. )
>> So I researched a bit on how people do 'Table-based printing' and
>> discovered that they usually get a QTableView and send it to print, simple
>> as that. That however doesn
> Sorry - send it without finished. -
> that however doesn't do one thing well - correct table layouting per page,
> with a nice heading and such.
> But there is a digia website that explained how to do it in a good way:
> The full code is for commercial guests, but that already gave me a few hints
> on how to do.
> Lubomir, since you are the one that tackled single-handed the Printing
> issue, what do you think about the blog post that I pasted here?

on a very quick scroll trough the post, so i may have missed something:

if the entire hidden widget is "grabbed" into a pixmap and we have a
fixed size for header and data rows, the proposal seems "legit" and
easy if we know the page rectangle. i think, however one potential
issue occurs where rows will have variadic (or growable) size, as the
current QTextDocument solution supports! while the widget is converted
to a pixmap it may also be required to write a lookup table with all
row vertical offset indexes (i.e. at what offset each rows stars), so
that a good estimation can be made when deciding to shift rows and
place headers on a new page.


More information about the subsurface mailing list