XSL - Repetir celda salto página XSL-FO

 
Vista:
sin imagen de perfil

Repetir celda salto página XSL-FO

Publicado por Guillermo (1 intervención) el 18/06/2012 16:41:35
Hola tengo una tabla que contiene 4 columnas, de tal manera que la primera es el nombre de un alumno, y a la derecha sus asignaturas matriculadas y junto a estas su número de clase y el horario.

La cosa es que el alumno solo lo saco una vez y entonces se van repitiendo las filas de cada asignatura, pero claro cuando se produce un salto de página me gustaría que el nombre del alumno se volviera a repetir en la primera fila de la primera página

¿Alguién ha conseguido hacer algo de esto? ¿Existe alguna propiedad en el fo:table cell o en el fo:block para que se imprima en todas las páginas si es que la celda está en más de una página?

Estas cosas en Oracle Reports se conseguían muy fáciles poniendo en la propiedad Imprimir Objeto en "Todas las páginas" pero en XSL-FO no lo he conseguido

Visualmente lo que he comentado de la tabla sería algo así como:

JUAN MATEMÁTICAS AULA3 MARTES Y MIÉRCOLES
ED. FÍSICA AULA4 JUEVES
................
.............
...............
(SALTO DE PAGINA)
JUAN INGLÉS AULA5 LUNES



(solo se volvería a poner Juan tras el salto de página).

Muchas 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

Repetir nombre del alumno en tabla en múltiples páginas

Publicado por Alejandro (227 intervenciones) el 07/07/2023 00:54:02
Para lograr que el nombre del alumno se repita en la primera fila de la primera página cuando hay un salto de página en la tabla, puedes utilizar la propiedad `table-omit-header-at-break` en combinación con `table-omit-footer-at-break`. Estas propiedades permiten controlar qué partes de la tabla se omiten al ocurrir un salto de página.

Aquí tienes un ejemplo de cómo aplicar estas propiedades en un XSL-FO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<fo:table table-layout="fixed">
  <fo:table-column column-width="proportional-column-width(1)"/>
  <fo:table-column column-width="proportional-column-width(1)"/>
  <fo:table-column column-width="proportional-column-width(1)"/>
  <fo:table-column column-width="proportional-column-width(1)"/>
 
  <fo:table-body>
    <fo:table-row>
      <fo:table-cell>
        <fo:block>
          <xsl:value-of select="nombre"/>
        </fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block>
          <xsl:value-of select="asignatura"/>
        </fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block>
          <xsl:value-of select="numero-clase"/>
        </fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block>
          <xsl:value-of select="horario"/>
        </fo:block>
      </fo:table-cell>
    </fo:table-row>
    <!-- Resto de filas de asignaturas -->
  </fo:table-body>
 
  <xsl:attribute name="table-omit-header-at-break">true</xsl:attribute>
  <xsl:attribute name="table-omit-footer-at-break">false</xsl:attribute>
</fo:table>

Con `table-omit-header-at-break` establecido en "true", la primera fila (nombre del alumno) se omitirá en las páginas subsiguientes después de un salto de página. Sin embargo, al establecer `table-omit-footer-at-break` en "false", la última fila (nombre del alumno) se repetirá en la primera fila de la primera página después de un salto de página.

Asegúrate de aplicar estas propiedades a la tabla correspondiente en tu documento XSL-FO para lograr el resultado deseado. Ten en cuenta que la disponibilidad y el comportamiento de estas propiedades pueden depender del motor de procesamiento XSL-FO que estés utilizando.

Espero que esta solución te sea útil para repetir el nombre del alumno en la primera fila de la primera página después de un salto de página en tu tabla. ¡Buena suerte con tu proyecto!
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