[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