para net generar asp c# pdf itext

c# - net - ¿Por qué la segunda fila de la tabla no se escribirá?



itextsharp free (1)

Supongo que ha simplificado su código en la medida en que el fragmento que comparte ya no es coherente con su propio código. Estás creando una tabla con 4 columnas. Si agrega 4 celdas, se representará una fila. Si agrega 8 celdas, se renderizarán dos filas. Sin embargo, si solo agrega 7 celdas, se agregará una sola fila. Las 3 celdas en la fila incompleta se omitirán porque iText solo renderiza las filas completas.

Consulte también Cómo generar PDF si nuestra columna es menor que la columna de la tabla declarada e ItextSharp, número de celdas no divisibles por la longitud de la fila y celda numerada impar no agregada a Pdf y tabla Pdf : la última celda no está visible y ...

Esto explica por qué no se muestra la segunda fila. Agregue la siguiente línea para ver si esto soluciona el problema:

table.CompleteRow();

En cuanto a su otra pregunta: siempre puede agregar una celda vacía como esta:

PdfPCell cell = new PdfPCell(); if (someCondition) { cell.addElement(new Paragraph("AAA")); } table.addCell(cell);

Finalmente, hay otro error en tu código. Esto no tiene ningún sentido:

p.BorderWidth = 0;

Un ancho de borde de 0 no significa que no se mostrará ningún borde. Como se ha explicado muchas veces, ISO-32000-1 define una línea con 0 de ancho como una línea cuyo ancho es igual al ancho mínimo que puede mostrar el dispositivo. Si no quieres usar ningún borde:

p.Border = PdfPCell.NO_BORDER;

Finalmente, necesito pedirte un favor: hemos rediseñado el sitio web iText y lo lanzamos en Acción de Gracias. Ahora notamos que no recibimos tantas visitas como solíamos antes del cambio. Dado el hecho de que toda la información que necesita se puede encontrar en la documentación en línea y dado que todavía tenía que hacer la pregunta, nos gustaría saber qué está mal en el sitio web. ¿Hay algo que podamos hacer para mejorar el contenido? ¿Cuál podría ser el motivo que aleje a las personas de nuestro sitio web? ¿Por qué hace tantas preguntas que ya están respondidas en la documentación oficial? ¿Tenemos demasiado contenido ahora?

Esta pregunta ya tiene una respuesta aquí:

Estoy intentando crear una tabla sin bordes con 4 columnas y 2 filas en la parte superior de mi documento PDF. El problema es que la segunda fila no se escribirá. Este es mi código:

float[] columnWidths = { 2, 1, 1, 1}; PdfPTable table = new PdfPTable(columnWidths); table.WidthPercentage = 100; if (...) //true { if (...) //true { PdfPCell p = new PdfPCell(new Phrase("AAA:_______________",infoFont)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 1st col,1st row } if (...) //true { PdfPCell p = new PdfPCell(new Phrase("BBB:_____", infoFont)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 2nd col,1st row } if (...) //true { PdfPCell p = new PdfPCell(new Phrase("CCC:_____", infoFont)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 3rd col,1st row } if (...) //true { PdfPCell p = new PdfPCell(new Phrase("DDD:_____", infoFont)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 4th col,1st row } } if (...) //true { if (...) //true { PdfPCell p = new PdfPCell(new Phrase("EEE: " + eee)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 1st col,2nd row } if (...) //true { PdfPCell p = new PdfPCell(new Phrase("FFF: " + fff)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 2nd col,2nd row } if (...) //true { PdfPCell p = new PdfPCell(new Phrase("GGG: " + ggg)); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 3rd col,2nd row } if (...) //true { PdfPCell p = new PdfPCell(new Phrase("HHH:___________________")); p.BorderWidth = 0; table.AddCell(p); // fixed pos. 4th col,2nd row } } document.Add(table);

¿Cómo puedo lidiar con esto? Y la segunda pregunta: ¿puedo tener una posición fija para cada condición if (verifique los comentarios en el código) para que cuando una condición if en la primera fila no sea verdadera, entonces esa celda esté vacía?