Hi Georg,

Georg Datterl wrote:
Hi Vincent,

I started to fool around a bit with the FOP source code and your suggestion:
I've just had a quick look and there seems to be almost nothing to do on the layout side (which is good news). You just have to go on l.111 of org.apache.fop.layoutmgr.PageBreaker (handleSpanChange method) and replace the assignment appropriately. Instead of:
   needColumnBalancing = (childLC.getNextSpan() == Constants.EN_ALL); something 
like
    needColumnBalancing = (childLC.getNextSpan() == Constants.EN_ALL)
           && childLC.nextHasFoxBalancingOption();
Simply setting false already gave me the desirable result on a small example.

Indeed, it worked on a small example, but a bigger example gave me an 
unexpected heart attack.

Maybe you shouldn’t take this task too seriously. I’d hate that FOP
causes you health problems ;-)


If the wide block is in the first column, the result looks like I expected it, but then I had a wide block in the second column and instead of moving to the next page, I got balancing again:

I couldn’t reproduce that. Can you please post the FO file showing the
issue?
What I’m getting is that the spanning block is deferred to the next
page. Something like that:
<header>
AAA CCC
AAA CCC
AAA CCC
BBB
BBB
BBB
<footer>
<header>
DDDDDDD
DDDDDDD
DDDDDDD
<footer>

Which should match your expectations, IIC.


I guess, the next step is somewhere in Phase 3, but I've yet to understand the effect of needColumnBalancing there. Any hints? ;-)

Columns are first typeset as normal, that is, as if there were no
spanning block that follows. Which means that the first column is filled
until the bottom of the page is reached, then the second column, etc.
needColumnBalancing is used to indicate that the layout must be re-made:
the first column must no longer be entirely filled, instead content must
be spread over the columns so that they have similar heights.

<snip/>

HTH,
Vincent

Reply via email to