XSL - autosize en un texto

 
Vista:

autosize en un texto

Publicado por neon (1 intervención) el 02/06/2009 18:31:16
hola,
Mi problema es el siguiente:

Tengo un fichero XML con los datos y un fichero XSL con el estilo del documento para que a traves de una herramienta genere unn pdf. Pues bien la cuestión es que el XML es dinamico y contiene un texto cuya longitud puede variar y no tiene salto de linea. Al generar el pdf, si el texto es muy largo aparece entrecortado,
la pregunta es: como puedo hacer para que el texto si ocupa más del tamaño definido en el XSL salte a la linea siguiente?

El codigo de XSL es el siguiente:
<xsl:template match="id('textocursiva')">
<page-table default-text-style-name="arial8i-c" num-columns="1" align="center" table-style-name="sinBordes">
<column-info unit="centimeters" width="20.0"/>
<row>
<cell>
<use-text-style name="arial8i-c">
<xsl:value-of select="tddatos/tddato/tdvalor"/>
</use-text-style>
</cell>
</row>
</page-table>
</xsl:template>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Salto de línea automático para texto largo en PDF generado a partir de XML

Publicado por Alejandro (227 intervenciones) el 06/07/2023 23:10:33
La solución propuesta para este problema consiste en utilizar la propiedad CSS `white-space: pre-wrap;` en el estilo de texto para permitir el salto de línea automático cuando el texto excede el tamaño definido en el XSL. A continuación se muestra el código XSL modificado:

1
2
3
4
5
6
7
8
9
10
11
12
<xsl:template match="id('textocursiva')">
  <page-table default-text-style-name="arial8i-c" num-columns="1" align="center" table-style-name="sinBordes">
    <column-info unit="centimeters" width="20.0"/>
    <row>
      <cell>
        <use-text-style name="arial8i-c" css-style="white-space: pre-wrap;">
          <xsl:value-of select="tddatos/tddato/tdvalor"/>
        </use-text-style>
      </cell>
    </row>
  </page-table>
</xsl:template>

En el código modificado, se agrega la propiedad `css-style="white-space: pre-wrap;"` al elemento `<use-text-style>`. Esto permite que el texto dentro de ese estilo tenga un salto de línea automático cuando es demasiado largo para ajustarse dentro del ancho definido en el XSL.

Con esta modificación, el texto que exceda el tamaño definido en el XSL se dividirá en líneas adicionales, lo que permitirá que aparezca completamente en el PDF generado.

Recuerda que la efectividad de esta solución puede depender de la herramienta o biblioteca específica que estés utilizando para generar el PDF a partir del XSL y XML. Es posible que debas ajustar o adaptar el código según las capacidades y restricciones de tu herramienta o biblioteca de generación de PDF.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar