Jonathan Levinson <Jonathan.Levinson <at> intersystems.com> writes:

> 
> Hi Lal,
> 
> You create an XSL-FO file by applying the XSLT transformation to your XML.  
The result is XSL-FO.  You can
> generate the PDF from XSL-FO directly using FOP, for example:
> 
> Here is an example:
> 
> c:\fop\fop.bat -fo COSLinearGradient2.fo -pdf COSLinearGradient21.pdf
> 
> Winnow your FO file down in size till you reach the minimum FO necessary to 
show your problem.
> 
> HTH,
> Jonathan Levinson
> 
> > -----Original Message-----
> > From: Lal Mohanty [mailto:lmohanty <at> yahoo.com]
> > Sent: Friday, February 17, 2012 4:09 PM
> > To: fop-users <at> xmlgraphics.apache.org
> > Subject: Re: Erratic behavior of keep-together.within-page=
> > 
> > Pascal Sancho <pascal.sancho <at> takoma.fr> writes:
> > 
> > >
> > > Hi,
> > >
> > > XSLT snippet is not appropriate to figure what you describe.
> > > You should a *short* XSL-FO to this thread, that demonstrates the
> > > issue you are describing.
> > >
> > > Le 17/02/2012 01:19, Lal Mohanty a écrit :
> > > > I am having a problem with keep-together.within-page="always" in Fop
> > 0.95/1.0.
> > > > It behaves erratically depending on size of the content. I need to
> > > > print a letter where all contents (Request/Data/Body/Para and
> > Request/Data/Closure)
> > > > need to be printed in one page. If it does not fit, I need to take
> > > > the
> > LAST
> > > > paragraph of the Request/Data/Para and the Closure to the next page.
> > > > This works in many cases, but sometimes, FOP squeezes the line-feeds
> > > > (or takes
> > away
> > > > the empty lines) to accommodate the whole content in one page. If I
> > > > have little larger contents, when it feels (I think) that it can not
> > > > put all in
> > a
> > > > single page (even after squeezing), it works fine without trimming
> > > > the
> > line-
> > > > feeds.
> > > >
> > > > Any help will be well appreciated. Thanks in advance.
> > > > Here is a sample XSL -
> > > > <xsl:template name="LetterBody">
> > > >     <fo:block white-space-collapse="false" linefeed-
treatment="preserve">
> > > >            <xsl:for-each select ="Request/Data/Body/Para">
> > > >               <xsl:if test="position()!=last()">
> > > >                <xsl:if test="Text">
> > > >                     <fo:block font-size="10pt" font-family="Courier">
> > > >                       <xsl:call-template name="WriteASIS">
> > > >                            <xsl:with-param name="buffer"
> > > > select="string
> > (.)"/>
> > > >                      </xsl:call-template>
> > > >                     </fo:block>
> > > >               </xsl:if>
> > > >             </xsl:if>
> > > >          </xsl:for-each>
> > > >    </fo:block>
> > > > </xsl:template>
> > > > ...
> > > > <xsl:template name="Closure">
> > > > <fo:block space-before="5mm" font-family="Courier"
> > > > keep-together.within- page="always">
> > > >   <xsl:for-each select="Request/Data/Body/Para[last()]/Text">
> > > >        <xsl:call-template name="WriteASIS">
> > > >             <xsl:with-param name="buffer" select="string(.)"/>
> > > >        </xsl:call-template>
> > > >  </xsl:for-each>
> > > >  <xsl:if test="NB21Request/Data/Closure/Text !=''">
> > > >       <xsl:for-each select="Request/Data/Closure/Text">
> > > >           <xsl:call-template name="WriteASIS">
> > > >              <xsl:with-param name="buffer" select="string(.)"/>
> > > >           </xsl:call-template>
> > > >       </xsl:for-each>
> > > >  </xsl:if>
> > > > </fo:block>
> > > > </xsl:template>
> > >
> > 
> > 
> > Dear Pascal:
> > I am sorry I could not make my issue clear. I am also not sure what you 
mean by
> > "short XSL-FO". I wish I could attach an image to demonstrate the issue. I 
have
> > put some empty lines between each paragraph using empty <fo:block>. FOP is
> > preserving these lines in many cases. However, in certain cases, it is 
taking them
> > out and squeezes the texts together.
> > AAA
> > 
> > BBB
> > becomes
> > AAA
> > BBB
> > This typically happens, when FOP tries to fit all the texts in the same 
page.I
> > have tried white-space-collapse="false" linefeed-treatment="preserve", but 
it
> > does not help. I have a feeling that keep-together.within-page="always" 
might
> > be overwriting the linefeed treatments. But keep-together.within-
> > page="always"
> > and linefeed-treatment="preserve" are in two different blocks. That's what 
I
> > had shown in my xsl-fo snippet.
> > 
> > Please help me how I can preserve these linefeeds.
> > Thanks
> > Lal
> > 
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: fop-users-unsubscribe <at> xmlgraphics.apache.org
> > For additional commands, e-mail: fop-users-help <at> xmlgraphics.apache.org
> 
> 
Thank you all for your patience (for a novice FOP builder). 
Here is the snippet where I think FOP is being erratic. Typically, I see a 
linefeed from TEXT 1 & TEXT 2 in one page and LAST TEXT in a different page. 
But sometimes, TEXT1, TEXT2 & LAST TEXT appears in the same page w/o any 
linefeed. Does it make any sense ?

<fo:block linefeed-treatment="preserve" white-space-collapse="false">
   <fo:block font-family="Courier" font-size="10pt">
     <fo:block space-before.optimum="5pt" space-after.optimum="10pt" 
         padding-right="0.5in" padding-left="0.5in" text-align="left" 
         line-height="12pt">
        TEXT  1...
        <fo:block white-space="pre" white-space-collapse="false" 
        linefeed-treatment="preserve"/>
        <fo:block margin-left="0.0in"/>
        <fo:block/>
     </fo:block>
     <fo:block margin-left="0.0in"/>
     <fo:block/>
   </fo:block>
   <fo:block font-family="Courier" font-size="10pt">
     <fo:block space-before.optimum="5pt" space-after.optimum="10pt" 
         padding-right="0.5in" padding-left="0.5in" text-align="left" 
         line-height="12pt">
        TEXT 2...
        <fo:block white-space="pre" white-space-collapse="false" 
         linefeed-treatment="preserve"/>
        <fo:block margin-left="0.0in"/>
        <fo:block/>
     </fo:block>
     <fo:block margin-left="0.0in"/>
     <fo:block/>
    </fo:block>
    ...                         
</fo:block>
<fo:block keep-together.within-page="always" font-family="Courier" 
    space-before="5mm">
    LAST TEXT ...
    <fo:block white-space="pre" white-space-collapse="false" 
       linefeed-treatment="preserve"/>
    <fo:block margin-left="0.0in"/>
    <fo:block/>
    ...
</fo:block>


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

Reply via email to