es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pdfmake mantiene dos filas juntas en un salto de página cuando se produce un salto de página en una tabla.

Para el pdfmake, tengo una tabla en la que usa dos filas por registro. Por ejemplo: imagen y cuando la tabla se rompe, se rompe por cada fila. Sin embargo, quiero que se rompa después o antes de dos filas en una tabla, para que se mantengan las dos filas juntas en una página.

En lugar de:
imagen

Quiero que las dos filas estén en la misma página. ¿Existe alguna manera de asegurarse de que esto suceda? He intentado utilizar la función pageBreakBefore, sin embargo, no tengo mucha intuición al respecto y no ha habido buenos ejemplos en línea.

var dd = {
        content: [ 

    'La siguiente tabla no tiene nada más que una matriz de cuerpo',
    {
        style: 'tableExample',
        table: {
           dontBreakRows:true,
          //  headerRows:1,
            body: [
                [{text:'Col', colSpan:3, fillColor:'grey'}, {},{}],
                [{text:'Columna 1',fillColor:'blue'}, {text:'Columna 2',fillColor:'blue'}, {text:'Columna 3',fillColor:'blue'}],
                ['Un valor va aquí', 'Otro aquí', '¿De acuerdo?'],
                [{text:'Descripción:\nsdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                ['Un valor va aquí', 'Otro aquí', '¿De acuerdo?'],
                [{text:'Descripción:\nsdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                ['Un valor va aquí', 'Otro aquí', '¿De acuerdo?'],
                [{text:'Descripción:\nsdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                ['Un valor va aquí', 'Otro aquí', '¿De acuerdo?'],
                [{text:'Descripción:\nsdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
            ],
        }
    },
]

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mantener dos filas juntas en la misma página mientras se utiliza pdfmake, puedes hacer uso de la función pageBreakBefore.

    Puedes establecer la función pageBreakBefore en true para el elemento de tabla que deseas mantener en la misma página. Esto asegurará que la tabla se rompa antes de que se alcance este elemento.

    Para implementarlo, puedes modificar tu código de la siguiente manera:

    var dd = {
        content: [
    
        'La siguiente tabla no tiene más que un arreglo de cuerpo',
        {
            style: 'tableExample',
            table: {
                dontBreakRows:true,
                // headerRows:1,
                body: [
                    [{text:'Columna', colSpan:3, fillColor:'grey'}, {},{}],
                    [{text:'Columna 1',fillColor:'blue'}, {text:'Columna 2',fillColor:'blue'}, {text:'Columna 3',fillColor:'blue'}],
                    [ 'Un valor va aquí', 'Otro aquí', '¿OK?' ],
                    [{text:'Descripción:\n'+'sdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                    [ 'Un valor va aquí', 'Otro aquí', '¿OK?' ],
                    [{text:'Descripción:\n'+'sdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                    // Agregar pageBreakBefore
                    [{text:'Un valor va aquí', pageBreakBefore: 'always'}, {text:'Otro aquí', pageBreakBefore: 'always'}, {text:'¿OK?', pageBreakBefore: 'always'}],
                    [{text:'Descripción:\n'+'sdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                    // Agregar pageBreakBefore
                    [{text:'Un valor va aquí', pageBreakBefore: 'always'}, {text:'Otro aquí', pageBreakBefore: 'always'}, {text:'¿OK?', pageBreakBefore: 'always'}],
                    [{text:'Descripción:\n'+'sdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                    [{text:'Un valor va aquí', pageBreakBefore: 'always'}, {text:'Otro aquí', pageBreakBefore: 'always'}, {text:'¿OK?', pageBreakBefore: 'always'}],
                    [{text:'Descripción:\n'+'sdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                    [{text:'Un valor va aquí', pageBreakBefore: 'always'}, {text:'Otro aquí', pageBreakBefore: 'always'}, {text:'¿OK?', pageBreakBefore: 'always'}],
                    [{text:'Descripción:\n'+'sdfgdhfjsfgvbnfhjfhjfghjgfjgfjfhjfghjgffghjgfasfsjgkfldshgfkld',colSpan:3}],
                ],
            }
        },
    ]
    
    }
    

    En el código modificado, hemos agregado la propiedad pageBreakBefore: 'always' a los elementos de dos filas que queremos mantener en la misma página.

    Al establecer la propiedad pageBreakBefore en 'always', pdfmake se asegurará de que el elemento se rompa antes que él y comience en una nueva página.

    Esto debería ayudarte a mantener las dos filas juntas en una página al utilizar pdfmake.

Comments are closed.