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.

Encabezado complejo que se repite en cada página del PDF.

Estoy utilizando iText7 para generar archivos PDF. Tengo que repetir un encabezado bastante complejo en cada página.
Mi encabezado complejo consta de tres párrafos con diferentes formatos cada uno, centrados, algo como esto:
descripción de la imagen

Intenté imitar un ejemplo con una tabla repetida como encabezado https://kb.itextpdf.com/home/it7kb/faq/how-to-add-a-table-as-a-header sin éxito.

Si sigo un ejemplo y reemplazo la tabla por un Div creado como (pseudo-código)

Paragraph myTitle = new Paragraph();
Paragraph title1, subtitle2, sub_subtitle3; // Todos inicializados correctamente

myTitle.add(title1).add(new AreaBreak(NEXT_AREA)).add(subtitle2).add(sub_subtitle3);

El título aparece, pero todos los títulos/subtítulos/sub-subtítulos están en una sola línea. ¿Cómo puedo insertar saltos de línea entre los párrafos?

Si sigo un ejemplo y reemplazo la tabla por un Div creado como (pseudo-código) Div.add(title1).add(new AreaBreak(NEXT_AREA)).add(subtitle2).add(sub_subtitle3); no aparece nada como título.

¿Alguna idea de cómo lograr el efecto deseado?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para insertar saltos de línea entre párrafos en un elemento Div al usar iText7, puedes utilizar el método add() para agregar un objeto Paragraph que solo contiene un elemento AreaBreak. Esto creará una nueva línea entre los párrafos. Aquí tienes un ejemplo:

    Paragraph myTitle = new Paragraph();
    Paragraph title1, subtitle2, sub_subtitle3; // Todos inicializados correctamente
    
    myTitle.add(title1)
           .add(new Paragraph(new Text("\n")))
           .add(subtitle2)
           .add(new Paragraph(new Text("\n")))
           .add(sub_subtitle3);
    

    Alternativamente, puedes utilizar el método setMargin() para crear espacio entre los párrafos:

    Paragraph myTitle = new Paragraph();
    Paragraph title1, subtitle2, sub_subtitle3; // Todos inicializados correctamente
    
    title1.setMarginBottom(10f); // Establecer margen entre párrafos
    subtitle2.setMarginBottom(10f);
    sub_subtitle3.setMarginBottom(10f);
    
    myTitle.add(title1)
           .add(subtitle2)
           .add(sub_subtitle3);
    

    En cuanto a por qué el elemento Div no muestra nada cuando agregas contenido, es posible que necesites especificar una altura para el elemento Div. Puedes intentar establecer la altura de forma explícita o utilizar el método setFixedPosition() para posicionar el Div en una ubicación específica de la página.

Comments are closed.