XSLT 打印PDF数据自动换行问题

在打印PO的时候发现数据过大影响PDF外观,需要解决:长度最大为20

解决方法:我们先写一个template, 取string-length 判断数据长度,如果长于19(ps:19是根据实际框设计的大小来定的)就换行,然后继续调用本身,这里也采用了一个递归形式。(注意在这个解决方法中针对的是我的实际情况来设计的,最大位数为20,其他情况暂且没试,不过应该差不多)

<xsl:template name="processText2">
        <xsl:param name="str"/>
        <xsl:choose>
            <xsl:when test="string-length($str) > 19">
                <xsl:value-of select="substring($str,1,19)"/>
                <fo:block white-space-collapse="false">&#10;</fo:block>
                <xsl:call-template name="processText2">
                    <xsl:with-param name="str" select="substring($str,20)"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$str"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

然后在前面的取值中调用这个template

 <fo:table-cell padding="3pt" border-width="0.5pt" border-style="solid" border-color="grey" padding-top="5pt">
       <fo:block>
         <xsl:call-template name="processText2">
            <xsl:with-param name="str">
             <xsl:value-of select="LINSKU"/>
            </xsl:with-param>
         </xsl:call-template>
       </fo:block>
 </fo:table-cell>

解决后的外观就很好看了

 

posted @ 2013-12-13 17:59  vicky_zhang  阅读(685)  评论(0)    收藏  举报