Hi, I am using fop with a two column layout and am having some problems with the column balancing when there is a spanned block midway though a page.
My material contains a lot of tables with keep-together's and external graphics. The image/table which are just too big to fit in the estimated height of the first column are correctly move into the second column, but this causes the second column to become longer then the estimated maximum span height, this in turn causes fop to insert a page break and move the end of the second column to the next page. However this looks very odd as often 80% of the original page is still blank. Fop already has a safety margin built into BodyAreaContainer.resetSpanArea() to address this problem, however it is set to small for my content. You can easily overcome this problem by increasing the safety margin which is added to maxHeigh in resetSpanArea() (from 2 * 15600, to 2 * 45600 in my case). This has the added benefit that it causes the first column be about 4cm longer then the second before each span, which adds some much needed white space to my layout. However this introduces a new problem (which must be present to a lesser degree anyway), the safety margin added in resetSpanArea() is added after the check to see if the span's content fits on the page, this means that if the content already filled the page, the span's new height is increased by the safety margin and overlaps with the footer. As far as I can see there are two ways to work around this: Disable the column balancing when the contence of a span overflows the page - simple set the column heights to the avaible size and then fit as much content into column one followed by column two. (This must be what happens on the last page of a flow). Change where the safety margin is added so that it is taken into account when checking if the content fits on the page. This would cause some unforinate white space at the bottom right of every page but I could live with this. Whilst these sound fairly simple, my Java experience is limited and I have not been able to follow though the fop structure to workout where to implement these changes - could anyone give my any guidance on where to start and/or which of the approaches might be easer to implement given the way fop works. (I am using FOP 0.20.5 on the Sun JDK 1.4 under windows XP) Thank you, Barnaby
