[xep-support] Tables always extending to the end of pages

Nikolai Grigoriev grig at renderx.com
Fri Jan 18 14:09:54 PST 2002


Patrick,

> I would like to develop XSL-FO statements similar to our CompuSet ones.
> 
> One of their characteristics is that the form header on the first page
> is of variable length and that the table below always extends to the
> end of the page (or more precisely to the end of the region-body for
> all pages where this table appears). 

It's hard to implement, indeed. I see no way to do it within regular XSL FO -
you definitely will need to leverage some extra facilities. My best try: 

- add enough empty rows  after the last "real" row to occupy the 
  exact height of the content-rectangle of the region-body. During formatting, 
  these rows will partly fill the space after the real data rows, and partly
  percolate to the last page where they form a blank table;

- from the resulting document, erase the last page - it contains empty 
  rows and nothing else. In XEP, this can be done programmatically
  by acting upon ther intermediate XML output of the layout. Otherwise, 
  you can delete the last page object from the final PostScript (a pretty 
  trivial task, since pages can be recognized by DSC comments) or PDF 
  (a bit harder but also doable). If you print your documents, 
  you can just recycle the last sheet in the output tray :-).

> This table can run on several pages. It should always use the 
> full extent of the last page and print the table-footer only 
> on the bottom of the last page where the table appears. 

Maybe you can put your footer as a separate table into a footnote,
and insert it into the last cell of the table. It will appear at the 
bottom of the last page. You'll have to practice some advanced
XSL FO tricks to ensure that the border line is continuous, 
but it's doable.

> Other small question: tables produced by RenderX and extending over
> several pages seem to have no intermediary bottom border. Is this the
> default behaviour? Can it be changed? Is it a "feature"?

Yes, it's a feature - and a feature of XSL FO, not of XEP :-). To draw
or not to draw a border on page/column break is determined by the
.conditionality component of its width. By default, it is suppressed
('cos the Spec so requires); to turn it on, set it to "retain" explicitly:

<fo:table-cell border-before-width.conditionality="retain"
                border-after-width.conditionality="retain" 
                ...>

This applies to all block-level elements that may have borders - fo:block, 
fo:table, fo:table-cell, fo:list-block etc. You can find a brief discussion 
and a sample in our XSL FO tutorial, included in all versions of XEP 
(doc/tutorial.pdf).

Regards,
Nikolai Grigoriev
RenderX

-------------------
By using the Service, you expressly agree to these Terms of Service http://www.renderx.com/tos.html



More information about the Xep-support mailing list