showtextaligned imagen for example java itext border spacing

java - imagen - Bordes de celdas de iText cortando texto



java itext table (2)

Escriba una clase o métodos comunes para construir su tabla, ya sea que esté utilizando Tabla o PdfPTable.

Estos métodos manejarán la alineación estándar, la medición basada en ascendentes / descendentes, etc. para usted. También brindan un lugar común para agregar un "párrafo en blanco de 3 puntos" o cualquier otro formato estándar que pueda necesitar.

El software de OO no está destinado a tratar de repartir secciones de código repetitivas y potencialmente inconsistentes.

Espero que esto ayude.

Estoy escribiendo un programa que genera un archivo pdf o rtf con una tabla en él, usando iText. Utilicé la tabla y la celda de clase de iText, en lugar de la tabla de tabla de Rtf o la tabla de tabla más específica para que se pueda generar cualquiera de los archivos al final. Necesitaba establecer el relleno de celda en un valor de -1, o de lo contrario había demasiado espacio entre cada fila de datos en la hoja impresa. Sin embargo, ahora estoy tratando de agregar bordes (específicamente al archivo pdf), y las celdas no están alineadas con el texto. El borde inferior de cada celda corta directamente a través del texto. En realidad, solo rodea el texto cuando el relleno de celda se establece en 2 o superior. A continuación se muestra una muestra de lo que estoy haciendo:

Document document = new Document(); Paragraph paragraph = new Paragraph(); Font iTextFont = new Font(Font.TIMES_ROMAN, 9, Font.NORMAL); try{ PdfWriter.getInstance(document, new FileOutputStream("C:/datafiles/TestiText.pdf")); document.open(); Table table = new Table(3); table.setPadding(-1); table.setWidth(90); Cell cell1 = new Cell(); cell1.setBorder(Rectangle.BOX); cell1.setVerticalAlignment(ElementTags.ALIGN_TOP); table.setDefaultCell(cell1); paragraph = new Paragraph("header", iTextFont); Cell cell = new Cell(paragraph); cell.setHeader(true); cell.setColspan(3); table.addCell(cell); paragraph = new Paragraph("example cell", iTextFont); table.addCell(paragraph); paragraph = new Paragraph("one", iTextFont); table.addCell(cell); paragraph = new Paragraph("two", iTextFont); cell = new Cell(paragraph); table.addCell(paragraph); paragraph = new Paragraph("Does this start a new row?", iTextFont); table.addCell(paragraph); paragraph = new Paragraph("Four", iTextFont); table.addCell(paragraph); paragraph = new Paragraph("Five", iTextFont); table.addCell(paragraph); document.add(table); } catch (Exception e) { //handle exception } document.close(); }

¿Hay alguna manera de resolver este problema moviendo todo el borde hacia abajo una gota (sin afectar la ubicación del texto) o eliminando los espacios entre cada línea (el espaciado parece ser un problema sobre el texto, no debajo) sin configurar el relleno de celda a -1?


debe usar PdfPTable que tiene muchos métodos que son útiles y el componente está bien envuelto. PdfPTable esta respuesta, por lo que cualquiera se enfrenta al mismo problema. Sabe dónde comenzar. Puede que no sea la respuesta típica a la pregunta, pero aquí viene ...

Organizar contenidos en tablas.
La salida de PDF

import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; public class Spacing { /** The resulting PDF file. */ public static final String RESULT = "results/part1/chapter04/spacing.pdf"; /** * Main method. * @param args no arguments needed * @throws DocumentException * @throws IOException */ public static void main(String[] args) throws DocumentException, IOException { // step 1 Document document = new Document(); // step 2 PdfWriter.getInstance(document, new FileOutputStream(RESULT)); // step 3 document.open(); // step 4 PdfPTable table = new PdfPTable(2); table.setWidthPercentage(100); Phrase p = new Phrase( "Dr. iText or: How I Learned to Stop Worrying " + "and Love the Portable Document Format."); PdfPCell cell = new PdfPCell(p); table.addCell("default leading / spacing"); table.addCell(cell); table.addCell("absolute leading: 20"); cell.setLeading(20f, 0f); table.addCell(cell); table.addCell("absolute leading: 3; relative leading: 1.2"); cell.setLeading(3f, 1.2f); table.addCell(cell); table.addCell("absolute leading: 0; relative leading: 1.2"); cell.setLeading(0f, 1.2f); table.addCell(cell); table.addCell("no leading at all"); cell.setLeading(0f, 0f); table.addCell(cell); cell = new PdfPCell(new Phrase( "Dr. iText or: How I Learned to Stop Worrying and Love PDF")); table.addCell("padding 10"); cell.setPadding(10); table.addCell(cell); table.addCell("padding 0"); cell.setPadding(0); table.addCell(cell); table.addCell("different padding for left, right, top and bottom"); cell.setPaddingLeft(20); cell.setPaddingRight(50); cell.setPaddingTop(0); cell.setPaddingBottom(5); table.addCell(cell); p = new Phrase("iText in Action Second Edition"); table.getDefaultCell().setPadding(2); table.getDefaultCell().setUseAscender(false); table.getDefaultCell().setUseDescender(false); table.addCell("padding 2; no ascender, no descender"); table.addCell(p); table.getDefaultCell().setUseAscender(true); table.getDefaultCell().setUseDescender(false); table.addCell("padding 2; ascender, no descender"); table.addCell(p); table.getDefaultCell().setUseAscender(false); table.getDefaultCell().setUseDescender(true); table.addCell("padding 2; descender, no ascender"); table.addCell(p); table.getDefaultCell().setUseAscender(true); table.getDefaultCell().setUseDescender(true); table.addCell("padding 2; ascender and descender"); cell.setPadding(2); cell.setUseAscender(true); cell.setUseDescender(true); table.addCell(p); document.add(table); // step 5 document.close(); } }