Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make XSL-FO table caption repeat on each page when the table spans multiple pages?

Tags:

xsl-fo

I have some very long tables which span multiple pages, rendered with Apache-FOP 1.1

A table has a caption, such as "Table 7.6. Details of Something" and column headers.

On each continued page, the column headers are properly repeated at the top. But I also need to have the table continuations have the caption as well, in the form: "Table 7.6. Details of Something (continued)"

Is there any way to do this with XSL-FO and Apache-FOP? or does it require extensions perhaps available via RenderX?

like image 523
jdkoftinoff Avatar asked Dec 17 '12 20:12

jdkoftinoff


1 Answers

I don't know of a way to do it in FOP, but that might because I haven't used FOP for anything more than basic PDF generation.

Using RenderX (XEP), you can set your fo:table-header to whatever title you want to use on continued pages and use a regular fo:block for the initial title.

You can then use the rx:table-omit-initial-header="true" attribute on your fo:table to not output the table header when the table is first output.

Here's an example rendered by RenderX 4.18...

Example XSL-FO

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" 
    xmlns:rx="http://www.renderx.com/XSL/Extensions">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="my-page" page-width="8.5in" page-height="11in">
            <fo:region-body margin="1in" margin-top="1.5in" margin-bottom="1.5in"/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="my-page">
        <fo:flow flow-name="xsl-region-body">
            <fo:block font-size="12pt" font-weight="bold" 
                text-align="center" space-after="6pt">Sample Table</fo:block>
            <fo:block>
                <fo:table rx:table-omit-initial-header="true" space-before=".08in">
                    <fo:table-column column-width="100%"/>
                    <fo:table-header>
                        <fo:table-cell>
                            <fo:block font-weight="bold"
                                font-size="12pt" text-align="center" 
                                space-after="6pt">Sample Table (Cont)</fo:block>
                        </fo:table-cell>
                    </fo:table-header>
                    <fo:table-body>
                        <fo:table-row>
                            <fo:table-cell>
                                <fo:table border-style="solid" border-width="1pt" padding="6pt">
                                    <fo:table-column column-number="1" column-width="20%"/>
                                    <fo:table-column column-number="2" column-width="80%"/>
                                    <fo:table-header font-weight="bold">
                                        <fo:table-cell text-align="left">
                                            <fo:block>Column 1</fo:block>
                                        </fo:table-cell>
                                        <fo:table-cell>
                                            <fo:block>Column 2</fo:block>
                                        </fo:table-cell>
                                    </fo:table-header>
                                    <fo:table-body>
                                        <fo:table-row padding-before="20px">
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                        <fo:table-row>
                                            <fo:table-cell>
                                                <fo:block>Lorem ipsum dolor sit amet</fo:block>
                                            </fo:table-cell>
                                            <fo:table-cell>
                                                <fo:block>Ten years ago a crack commando unit was sent to prison by a military court for a crime they didn’t commit. These men promptly escaped from a
                                                    maximum security stockade to the Los Angeles underground. Today, still wanted by the government, they survive as soldiers of fortune.</fo:block>
                                            </fo:table-cell>
                                        </fo:table-row>
                                    </fo:table-body>
                                </fo:table>
                            </fo:table-cell>
                        </fo:table-row>
                    </fo:table-body>
                </fo:table>
            </fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

Example PDF Output Page 1

enter image description here

Example PDF Output Page 2

enter image description here

like image 94
Daniel Haley Avatar answered Jan 04 '23 00:01

Daniel Haley