On 04 Sep 2009, at 21:22, bonekrusher wrote:

Hi Phil

I have a table inside a fo:block-container. The block-container's
orientation is 90 degrees (see attached). When the table rows exceeds the table width, the table does not break to the next page. I've attached a
working example. How do I get the the table to break to the next page?

Short answer: you can't. Not with FOP, at any rate.

Longer answer:
I remember playing with a similar case in the past, and realized back then that what you seem to expect, is strictly speaking not possible in standard XSL-FO 1.1, unless you were to rotate the entire region- body. IIRC, some commercial implementations offer proprietary extensions to allow such breaks to be produced. FOP unfortunately does not, yet...

As for the standard: When would the block-container break to the next page? Answer: when its block-progression-dimension exceeds the available space in block-progression-direction. Now, keep in mind that reference-orientation appears to change block/ inline-progression-direction for everything that lies *inside* the b-c (= it establishes a new coordinate system *within* the b-c's viewport- area). The b-c's height is still its extent in the block-progression- direction of the region, which will be determined by the width of its content (assuming height="auto", as in your sample) If the content's height is greater than the region-body's width, then that is considered overflow in inline-progression-direction. If we had overflow="scroll" implemented for AWT, you would at most get a scrollbar. From the point of view of the flow, the block-container's height can never exceed the height of the region-body, unless the content's width is greater than the region's height. Even then, FOP chooses to let the content overflow, rather than breaking. Rotated block-containers are never broken. (*)

ATM, I'm unsure as to how much/little effort it would take to change this. It seems quite possible to allow the nested Breaker to return multiple parts instead of removing all breaks, as it does now. That's the easy part. I see a possible difficulty for a block-container that starts, say in the middle of a page. On the next page, there is more available space for the content-width, but at the time the breaks are first computed, we don't really know yet how much that will be. We can only assume it is equal to the 'current' available height. Support for changing page-width has been added to Trunk recently, but when only the page-height changes, nothing special happens, and we could still get overflow as a result...

(*) Technically: for regular block-containers, the element list is inlined into the eventual sequence returned by the FlowLayoutManager to the PageBreaker. On the other hand, rotated or absolute-positioned block-containers are processed/broken by a nested BlockContainerLayoutManager.BlockContainerBreaker, whose isSinglePartFavored() returns true. Basically, what the outer PageBreaker gets to see here, is a single block.




http://www.nabble.com/file/p25300387/example2.png example2.png
http://www.nabble.com/file/p25300387/example.fo example.fo

Thanks,

Phil
--
View this message in context: 
http://www.nabble.com/fo%3Atable-breaks-in-fo%3Ablock-container-tp25300387p25300387.html
Sent from the FOP - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



Regards,

Andreas Delmelle
mailto:andreas.delmelle.AT.telenet.be
jabber: [email protected]
skype: adlm0608

---


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to