2011-02-04 23 views
23

Estoy utilizando la biblioteca iText para generar archivos pdf en Java. Estoy escribiendo datos en pdfptable, ¿cómo puedo hacer que los bordes de la mesa sean invisibles?Un borde invisible de pdfptable

Respuesta

46

Los elementos del borde del PdfPTable están definidos por el PdfPCell que se agregan a la tabla. Cada celda tendrá su propio estilo/formato. Aquí es la API: http://api.itextpdf.com/

Ejemplo

PdfPTable table = new PdfPTable(2); 
PdfPCell cellOne = new PdfPCell(new Phrase("Hello")); 
PdfPCell cellTwo = new PdfPCell(new Phrase("World")); 

cellOne.setBorder(Rectangle.NO_BORDER); 
cellOne.setBackgroundColor(new Color(255,255,45)); 

cellTwo.setBorder(Rectangle.BOX); 

table.addCell(cellOne); 
table.addCell(cellTwo); 

Si desea más detalles acerca de los valores/borde del rectángulo, echar un vistazo a la sección Valores constantes itext de Rectángulo, aquí: http://api.itextpdf.com/constant-values.html

+0

Gracias, eso es lo que quería. – yogsma

+0

Intenté ambos de forma independiente y ambos parecen hacer el borde invisible. ¿Cuál es exactamente la diferencia entre 'cellOne.setBorder (Rectangle.NO_BORDER);' y 'cellTwo.setBorder (Rectangle.BOX);'? – Qohelet

+0

gracias, funcionan bien !! –

2
PdfPTable nestedTable = new PdfPTable(); 
    nestedTable.DefaultCell.Border = 0; 

    nestedTable.AddCell(new Phrase("First"); 
    nestedTable.AddCell(new Phrase("Second"); 
    nestedTable.AddCell(new Phrase("2515"); 

    PdfPCell nestCell= new PdfPCell(nestedTable); 
+0

'nestedTable.DefaultCell.Border = 0;' - eso simplemente no se ve bien. Luego de las pruebas también encontré que no funciona. A menos que las propiedades DefaultCell y Border sean públicas, esto nunca podría funcionar. – wmdvanzyl

+0

Podría funcionar, pero solo en C# (viendo el caso de las llamadas a Propiedades y Método), mientras OP preguntaba sobre la solución Java. Además, faltan paréntesis en las líneas 4-6. – mareckmareck

11

En mi aplicación funciona así:

PdfPTable table = new PdfPTable(2); 
table.getDefaultCell().setBorder(0); 
... 
+2

Esto no funcionó para mí. – wmdvanzyl

+2

'Rectangle.NO_BORDER' es lo mismo que' 0' Prefiero usar el nombre de las constantes, más fácil de leer y siempre compatible al actualizar en la versión. – chillworld

+1

Este método no parece funcionar en la versión 5.5.6. La respuesta de Sean es correcta: cellOne.setBorder (Rectangle.NO_BORDER); –

1

Lo siguiente funciona para mí.

table.getDefaultCell().setBorderWidth(0f); 
+0

No, no funciona –

0

conjunto cell color white. cellOne.setBorderColor (BaseColor.WHITE);

Cuestiones relacionadas