【问题标题】:iTextSharp Vertical SpacingiTextSharp 垂直间距
【发布时间】:2009-05-18 01:07:58
【问题描述】:

我正在使用 iTextSharp 生成一些 PDF 文件。我有两个包含内容的表格,我想在两个表格之间放置一些空间,比如相当于 1 行文本(使用与空间周围的表格相同的字体)。

下面是我用来添加两个表的代码。我想不通的是如何在两张桌子之间放置一个垂直空间。

Table upperTable = new Table(1);
upperTable.Border = Rectangle.NO_BORDER;
upperTable.DefaultCell.Border = Rectangle.NO_BORDER;
upperTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
upperTable.AddCell(new Phrase("some text", font3));
d.Add(upperTable);
Table lowerTable= new Table(1);
lowerTable.Border = Rectangle.NO_BORDER;
lowerTable.DefaultCell.Border = Rectangle.NO_BORDER;
lowerTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
lowerTable.AddCell(new Phrase("some other text", font3));
d.Add(lowerTable);

谁能告诉我如何在两个表格之间添加垂直空间?

谢谢!

【问题讨论】:

    标签: c# itextsharp


    【解决方案1】:

    改用 PdfPTable。它有属性SpacingBeforeSpacingAfter

    例如:

    PdfPTable upperTable = new PdfPTable(1);
    upperTable.AddCell(new Phrase("some text", font3));
    upperTable.SpacingAfter = 10f;
    

    【讨论】:

    • 问题是 2009 年的。iTextSharp 在 4.3.x 之前有 Table 对象,从 5.x 版本开始,它是 PdfPTable
    【解决方案2】:

    我找到了一种可行的解决方案...将新行作为前面字符串或后面字符串的一部分添加到我要创建的空间中。例如:

    Table upperTable = new Table(1);
    upperTable.Border = Rectangle.NO_BORDER;
    upperTable.DefaultCell.Border = Rectangle.NO_BORDER;
    upperTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
    upperTable.AddCell(new Phrase("some text" + '\n', font3));
    d.Add(upperTable);
    Table lowerTable= new Table(1);
    lowerTable.Border = Rectangle.NO_BORDER;
    lowerTable.DefaultCell.Border = Rectangle.NO_BORDER;
    lowerTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
    lowerTable.AddCell(new Phrase('\n' + "some other text", font3));
    d.Add(lowerTable);
    

    将导致在"some text""some other text" 之间添加高度由font3 定义的2 行

    【讨论】: