Re: Erratic behavior of keep-together.within-page=
Hi, there is no best method to insert line breaks; this depends on context. If you have a text containing LF that must be preserved, it should be nested in a single fo:block. As a good practice, a fo:block with LF-treatment=preserve should not contain extra fo:blocks. Le 22/02/2012 06:29, Lal Mohanty a écrit : Pascal Sancho pascal.sancho at takoma.fr writes: Thanks Pascal. Great suggestion. The snippet I included earlier was formatted for better read. In real FO there is no LF. I use empty blocks to put line breaks. I am still struggling to understand how the IS there any better way to put a line breaks? Thanks in advance. -- Pascal - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Erratic behavior of keep-together.within-page=
Pascal Sancho pascal.sancho at takoma.fr writes: Thanks Pascal. Great suggestion. The snippet I included earlier was formatted for better read. In real FO there is no LF. I use empty blocks to put line breaks. I am still struggling to understand how the IS there any better way to put a line breaks? Thanks in advance. - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Erratic behavior of keep-together.within-page=
Hi, Your snippet gives me expected output, and *all* LF are taken into account, comprising those between empty blocks, and those before and after opening/closing tags. Note that when LF-treatment is preserve, embedding multiple fo:block can give unwanted output, hard to predict or understand. You should replace empty blocks with explicit LF, that should give a more readable code. removing LF before, between and after tags can help too. As a debug help, you can colorize your fo:blocks (using background-color for filled blocks or border-after for empty blocks), this will give an easy-to-understand output, that can help to debug XSL-FO or XSLT. Le 18/02/2012 01:33, Lal Mohanty a écrit : 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 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 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
Re: Erratic behavior of keep-together.within-page=always
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 -- Pascal - To unsubscribe, e-mail: fop-users-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
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-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
RE: Erratic behavior of keep-together.within-page=
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:lmoha...@yahoo.com] Sent: Friday, February 17, 2012 4:09 PM To: fop-users@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-unsubscr...@xmlgraphics.apache.org For additional commands, e-mail: fop-users-h...@xmlgraphics.apache.org
Re: Erratic behavior of keep-together.within-page=
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