XSL - Páginas vacías en XSL

 
Vista:

Páginas vacías en XSL

Publicado por Esmeralda (1 intervención) el 03/05/2019 18:06:11
Hola!!

Tengo un documento, el cuál debe finalizar en una página par, tengo contenido condicional en la página 4 y 6, en algunos escenarios el documento debe generar 6 páginas y me funciona perfecto, pero en otro caso debo generar 4 paginas, el problema es que cuando debo generar 4 paginas el resultado del documento me muestra 4 paginas con contenido y las úlltimas dos paginas las genera vacias, como puedo eliminar las últimas dos páginas en este escenario???

Gracias
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

Eliminación de las últimas páginas en un escenario específico

Publicado por Alejandro (227 intervenciones) el 07/07/2023 18:58:52
Para eliminar las últimas dos páginas en un escenario específico en el que se generan solo 4 páginas en lugar de 6, puedes utilizar una combinación de las funciones `page-count()` y `last()` en tu XSLT.

Aquí tienes un ejemplo de cómo puedes lograrlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="pdf"/>
 
  <xsl:template match="/">
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
      <fo:layout-master-set>
        <!-- Define tus layouts maestros aquí -->
      </fo:layout-master-set>
      <fo:page-sequence master-reference="tu-master-reference">
        <!-- Resto del contenido de la página -->
      </fo:page-sequence>
    </fo:root>
  </xsl:template>
 
  <!-- Resto de tus templates y reglas -->
 
</xsl:stylesheet>

Dentro del `<xsl:template match="/">`, puedes utilizar una estructura condicional `<xsl:if>` junto con las funciones `page-count()` y `last()` para determinar si debes eliminar las dos últimas páginas.

Aquí tienes un ejemplo de cómo puedes hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
<xsl:template match="/">
  <xsl:if test="page-count() > 4 and last() > 6">
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
      <fo:layout-master-set>
        <!-- Define tus layouts maestros aquí -->
      </fo:layout-master-set>
      <fo:page-sequence master-reference="tu-master-reference">
        <!-- Resto del contenido de la página -->
      </fo:page-sequence>
    </fo:root>
  </xsl:if>
</xsl:template>

En este ejemplo, la condición `page-count() > 4` verifica si se generan más de 4 páginas y `last() > 6` verifica si estás en la página 6 o posterior. Si ambas condiciones se cumplen, se genera el contenido normalmente. De lo contrario, no se generará nada y las últimas dos páginas se eliminarán.

Asegúrate de adaptar el código a tu estructura y lógica específicas. Espero que esto te ayude a resolver tu problema.
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