Hi, In case anyone else has a similar problem there is a simple (and very obvious) fix:
In: BodyAreaContainer.resetSpanArea(), After line: newHeight += 2 * 15600; Add: if(newHeight>getRemainingHeight()) { newHeight = getRemainingHeight(); } You can then tweak the newHeight safety margin till it works with your content, without the columns overlapping the footer. Yes, I don't know why it took me so long to see this ether. Barnaby >> 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). (In fact the solution is even easier, simply don't let the column height grow bigger then the page. The code already handles moving anything that doesn't fit onto the next page.) >> 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.