java - iText 单元格边框穿过文本

标签 java itext border spacing

我正在编写一个使用 iText 生成包含表格的 pdf 或 rtf 文件的程序。我使用了 iText 类表和单元格,而不是更具体的 RtfTable 或 pdfTable,以便在最后生成任一文件。我需要将单元格填充设置为 -1 的值,否则打印纸上的每行数据之间的空间太大。但是,我现在正在尝试添加边框(特别是对 pdf 文件),并且单元格没有与文本对齐。每个单元格的底部边框直接穿过文本。只有当单元格填充设置为 2 或更高时,它才会真正包围文本。以下是我正在做的一个示例:

  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();

  }

有没有办法解决这个问题,要么将整个边框向下移动(不影响文本位置),要么消除每行之间的空格(间距似乎只是文本上方的问题,不在下面)而不将单元格填充设置为 -1?

最佳答案

编写一个类或常用方法来构建您的表格——无论您使用的是 Table 还是 PdfPTable。

这些方法将为您处理标准对齐、基于上升/下降的测量等。它们还提供了一个常用位置来添加“3pt 空白段落”或您可能需要的任何其他标准格式。

OO 软件并不意味着要敲出重复且可能不一致的代码部分。

希望这会有所帮助。

关于java - iText 单元格边框穿过文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987919/

相关文章:

java - 遍历selenium中同名的类

c# - 使用 itextsharp.text.pdf 合并多个 itextsharp.text.pdf.PdfReader 对象后文档看起来被剪切了

c# - 使用 IText SignDeferred 签署文档时如何保留 PDF-A

vb.net - iTextSharp 自定义纸张尺寸

CSS 边框图像不适用于 IPAD

java - 如何使用 aws cli 创建 java aws lambda 函数?

Java KeyListener keyPressed 方法触发速度太快

java - Kubernetes statefulset 不使用存储类来创建持久卷

css - 移除边框后,边距超出 div 范围

css - 如何使边框跟随图像上的圆 Angular