Hi Vincent,
> Entering the details would be too complicated, but the problem is basically
> due to the repeated header of the inner table at page breaks.
Well, if I don't have a blank block in the left column, everything works fine.
I guess, I could reduce the height of the blank block by the height of the
table header, which I could get by adding an id attribute to the table-header
entry. Then my problem would be, what if the image is smaller than the table
header? In that case, the image would move from page 3 to page 2, I assume. A
break-after at the blank block would lead to same problems I had before.
Would it theoretically help, if I get the table header height, subtract it from
the blank block height and add it as space-before to the image?
It would be easier than finding the number of rows in the table and splitting
the table in two, although that should be possible too, somehow.
> You put the red marker as a child of the block that surrounds
> the whole content of the spanning cell, and the green marker
> inside the cell on row 3, column 1. Both end at roughly the
> same moment when the end of the surrounding table is reached.
> They are 'competing' when the marker is retrieved and it
> appears that the red one wins. If you put the green marker
> in an empty block after the big surrounding block that
> contains the red one, that should work.
So the end of the block is interesting too? I thought, only the beginning. So
here
<block>
<marker1 />
<block>
<marker2 />
</block>
</block>
<retrieve-marker last>
would find marker1?
Mit freundlichen Grüßen
Georg Datterl
------ Kontakt ------
Georg Datterl
Geneon media solutions gmbh
Gutenstetter Straße 8a
90449 Nürnberg
HRB Nürnberg: 17193
Geschäftsführer: Yong-Harry Steiert
Tel.: 0911/36 78 88 - 26
Fax: 0911/36 78 88 - 20
www.geneon.de
Weitere Mitglieder der Willmy MediaGroup:
IRS Integrated Realization Services GmbH: www.irs-nbg.de
Willmy PrintMedia GmbH: www.willmy.de
Willmy Consult & Content GmbH: www.willmycc.de
-----Ursprüngliche Nachricht-----
Von: Vincent Hennebert [mailto:[email protected]]
Gesendet: Mittwoch, 19. August 2009 18:55
An: [email protected]
Betreff: Re: Strange table behaviour
Hi Georg,
Georg Datterl wrote:
> Hi Vincent,
>
> I tried your suggestion and it works nearly perfectly. Maybe you can take
> another look at the resulting fo and answer me two questions:
>
> * Why is the table breaking incorrectly on the second page? The table is
> painting into the footer area (which starts at the red marker), but judging
> from the gap on page three, it seems like the break was correct when
> generating the area tree, so the addition of the pink blank block seems to
> influence the break rules. Reducing the height of the blank block does
> influence the break, but i have to reduce the blank block by around 100pt to
> get a correct break in the table.
You are hitting FOP's fundamental limitation about tables. The table algorithm
works well only when the table is broken over maximum two pages. Beyond that
there can be glitches as the one you see on your document. You may want to have
a look at the following page for an illustration of the process (although it's
targeted at developers):
http://wiki.apache.org/xmlgraphics-fop/TableLayout/KnownProblems
Entering the details would be too complicated, but the problem is basically due
to the repeated header of the inner table at page breaks.
The algorithm doesn't realise that space must be accounted for it on the second
page. See it like this: the algorithm assumes that the table will be broken at
most twice, so the header will appear at most twice. But actually the table is
broken 3 times, so the header must appear
3 times... which is not handled. This is a simplified view but roughly
corresponds to what happens.
One workaround could be to split the table into several sub-tables that would
fit on two pages. Since you're working with the area tree, you could detect
that the table is split in 3, and put the 3rt part into a new table. Not sure
how feasible that would be though :-\
> * I want a "table continues on next page" marker for the whole image/table
> construct. So I set a (for this example) red marker at the beginning of the
> text block (second column, the magenta colored ones) and a green marker at
> the beginning of the PF-number block (first column, red blocks), because I
> always have text and the PF-Number always has to be on the last page. I'm
> quite sure I should get a red marker on the first page, because I have a
> magenta block after a red block, obviously I get a red marker on the second
> page, although there's neither a magenta nor a red block, but I'm positive I
> don't like the red block on the last page. I guess I can solve that problem
> by placing the marker differently, but I'd like to understand what happens
> here.
You put the red marker as a child of the block that surrounds the whole content
of the spanning cell, and the green marker inside the cell on row 3, column 1.
Both end at roughly the same moment when the end of the surrounding table is
reached. They are 'competing' when the marker is retrieved and it appears that
the red one wins. If you put the green marker in an empty block after the big
surrounding block that contains the red one, that should work.
> So, if you are not too busy, I'd be gratefull for some more input.
>
> Regards,
>
> Georg Datterl
<snip/>
HTH,
Vincent
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]