xmlgraphics-fop-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sheldon Glickler <sheldo...@thevillages.net>
Subject Re: Question on page wrap
Date Sat, 01 Nov 2008 19:42:13 GMT
Andreas Delmelle wrote:
> On Nov 1, 2008, at 13:08, Sheldon Glickler wrote:
> 
>> Andreas Delmelle wrote:
>>> On Oct 31, 2008, at 20:03, Sheldon Glickler wrote:
>>>> I have a report that has an arbitrary number of columns.  The number 
>>>> of columns is such that it would go beyond the page width.  Also the 
>>>> number of rows is such that it goes beyond the page height.
>>> Problematic. XSL-FO 1.1 knows no 'vertical' page-breaks. The table 
>>> will only be broken in block-progression-direction (if there is no 
>>> keep-property telling us otherwise), and clipped if it doesn't fit 
>>> the page in inline-progression-direction.
>>> None of your proposed fallbacks are possible in XSL-FO, IIRC. Not 
>>> only in FOP, but any implementation...
>>> Cheers
>>> Andreas
>>
>> Wow!  That is **some** major drawback.
> 
> On the 'bright' side, I know this particular feature to be among the 
> XSL-FO 2.0 requirements...
> 
>> First, I am using .20-5 (and cannot upgradee).  I had envisioned doing 
>> something with coding.  I know how wide my columns are and how many 
>> rows will fit on a page.
>>
>> I imagine I could use two loops, one for horizontal and one for 
>> vertical.  That would mean, for the horizontal, writing the header 
>> block as Header1_1, Header1_2, etc.  I would then have in the XSL 
>> templates for Header1_1, FirstColumns1_1, Body1_1, Header1_2, 
>> FirstColumns1_2, Body1_2, etc. where FirstColumns1_2 was a repeat of 
>> FirstColumns1_1.
>>
>> If there were a "page break" instruction, I could then limit the 
>> Body1, Body2 to those lines that fit, and then repeat with Header2_1, 
>> FirstColumns2_1, Body2_1, Header2_2, FirstColumns2_2, Body2_2, etc. 
>> where Header2_1 was a repeat of Header1_1 and FirstColumns2_2 was a 
>> repeat of FirstColumns2_1and so on.
> 
> You mean, something like: break-before="page" or break-after="page"? 
> (see: http://www.w3.org/TR/xsl/#d0e26492)
> 
> That was along the lines I was thinking this issue /might/ be solvable: 
> pre-compute the breaks and insert them as forced breaks in the XSLT. You 
> would have to split the content into multiple tables so that the FO 
> processor would always get tables that fit entirely into one page.

Ok, it seems I need a line like:

<xsl:attribute name="break-after">page</xsl:attribute>

inside the <fo:table>.  The problem now is that it goes in the xsl, but 
I do all my calculations to generate the xml, not the xsl.  Would this work?

In the xsl I would have:

<xsl:template match-"page_1">
   <xsl:apply-templates select="header" />
   <xsl:apply-templates select="data_columns" />
   <xsl:apply-templates select="break_page">
</xsl:template>

<xsl:template match="break_page">
   <fo:table>
     <xsl:attribute name="break-after">page</xsl:attribute>
   </fo:table>
</xsl:template>

and in the xml forcing a page break with
<break_page></break_page>

....or not even adding anything to the xml at all?  The pages (_1 to 
_20) have already been determined in the xml by column and row count.

		



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Mime
View raw message