【问题标题】:how do I reset a paragraph in iText如何在 iText 中重置段落
【发布时间】:2012-11-20 07:35:12
【问题描述】:

我正在使用 iText 在 java 中创建一个 pdf 在我们看来,一切都按照我的想法工作,除了当我使用循环时,我正在使用的段落似乎包含了我存储在其中的所有数据。更清楚一点,这就是我想要做的:

PdfPTable table = new PdfPTable();


for(int k=0; k < 3; k++){

Paragraph leftPar = new Paragraph();

leftPar.add(new Paragraph("\n List Object " + k, topicFont));

table_cell = new PdfPCell(leftPar)
table.addCell(table_cell);    
}

我想要的表格输出是:

List Object 0
-------------
List Object 1
-------------
List Object 2

但我得到的输出是:

List Object 0
-------------
List Object 0
List Object 1
-------------
List Object 0
List Object 1
List Object 2
-------------

我必须将信息放在不同的单元格中,所以我的问题是我认为当我声明 leftpar = new 段落时,它会创建它的新实例,但它似乎保留了我添加的其他内容。我什至试过 leftPar = null;然后leftpar =新段落,仍然没有?有什么想法吗?

谢谢!

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

    尝试类似here:

    Paragraph p = new Paragraph("This is a paragraph",
                   FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new Color(0, 0, 255)));
    

    在你的情况下可能会这样做:

    Paragraph leftPar = new Paragraph("\n List Object " + k, topicFont);
    

    【讨论】:

    • 它似乎对我不起作用。我必须将它添加到单元格中的段落,以便我可以将其添加到我的表格中。
    • 好的,我明白了,这根本不是段落,实际上是保存信息的表格。所以我不得不做 table.flushContent();在 for 循环结束时。谢谢!
    • 酷 - 也许你可以添加一个单独的答案来显示真正解决了你的问题;我认为这也可能对其他人有所帮助
    【解决方案2】:

    答案是表格本身保留了所有其他信息。所以我不得不使用方法 flushContent();在循环结束时,将表格添加到文档之后。

    table.flushContent(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 2016-03-30
      • 1970-01-01
      • 2019-06-02
      • 2012-02-27
      • 1970-01-01
      相关资源
      最近更新 更多