2016-07-06 34 views
0

Derzeit schreibe ich die report.fo, um PDF für den Bericht zu generieren. Ich habe ein Problem gefunden. Das muss ich Auto-Pause einen langen Text wie ‚aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘ in <fo:block>XSLT - Wie könnte ich einen langen Text in fo brechen: Block

Meine Lösung, die ich für jeweils 15 Zeichen substr benötigen und eine Linie für sie einsetzen.

Weil es ein Text ist, nicht 'aaaa aaaa aaaaa ....' so konnten wir nicht nutzen das wrap-option="wrap" oder so etwas wie linefeed-treatment="preserve"

Kann mir jemand helfen? Danke

+1

Mögliche Duplikat [XSL-FO: Kraft Wrap auf Tabelleneinträge] (http://stackoverflow.com/questions/4350788/xsl-fo-force-wrap-on- Tabelleneinträge) –

Antwort

0

Danke für Ihre gute Antwort. Eine andere Art und Weise könnten wir verwenden:

<xsl:template name="intersperse-with-zero-spaces"> 
     <xsl:param name="str"/> 
     <xsl:param name="max_length"/> 

     <xsl:variable name="head" select="substring($str, 1, $max_length)" /> 
     <xsl:variable name="tail" select="substring($str, $max_length + 1)" /> 

     <xsl:value-of select="$head"/> 

     <xsl:if test="$tail"> 
      <!-- there's no space present when translate() returns the same string and the $tail does not begin with a space, either --> 
      <xsl:if test="string-length(translate($head, ' ', '')) = string-length($head) and not(substring($tail, 1, 1)=' ')"> 
       <xsl:text>&#x200b;</xsl:text> 
      </xsl:if> 
      <xsl:call-template name="intersperse-with-zero-spaces"> 
       <xsl:with-param name="str"  select="$tail"/> 
       <xsl:with-param name="max_length" select="$max_length"/> 
      </xsl:call-template> 
     </xsl:if> 
    </xsl:template> 



<fo:table-cell padding-left="3mm" width="2.5cm"> 
    <fo:block > 
     <xsl:call-template name="intersperse-with-zero-spaces"> 
      <xsl:with-param name="str"><xsl:value-of select="./@originator"/></xsl:with-param> 
       <xsl:with-param name="max_length" select="15"/> 
      </xsl:call-template> 
    </fo:block>  
</fo:table-cell>