【问题标题】:Adding Paragraph element on iText pdf goes to next page在 iText pdf 上添加段落元素转到下一页
【发布时间】:2014-11-13 16:04:28
【问题描述】:

以下是用于创建段落的代码。 dpa.getName() 将从另一段代码中获取 HTML 内容,这段代码由 HTML 标记组成,然后将其删除并传递给单元格。

PdfPTable table = new PdfPTable(new float[] {100});
table.setWidthPercentage(100);

//This code takes the HTML and converts it to a list of iText objects
//which can then be rendered on PDF
StringReader stream = new StringReader(Utilities.parseForHTMLWorker(dpa.getName()));
PdfPCell dpaCell = makeBodyCell("");
try {
        ArrayList list = HTMLWorker.parseToList( stream, null);
        for( int i = 0; i < list.size(); i++ ) {
            Paragraph p = (Paragraph)list.get(i);
            dpaCell.addElement(p);
        }            
    } catch (IOException e) {
        Logger.Log("InitialInterviewDetailsPrint", "render()", e.toString(), 1);
        e.printStackTrace();
    }
table.addCell(dpaCell);

list 变量获取Paragraph 的列表。这些段落足够大,至少有 10 个句子。即使页面底部有容纳 5 行的空间,所有内容也会移动到新页面。我不希望在页面底部留下这个空白区域,并且希望段落在两个页面中拆分其内容。

是否需要在段落上设置任何特定属性才能将它们放在同一页面上?

【问题讨论】:

    标签: java pdf-generation itext


    【解决方案1】:

    你必须使用setKeepTogether方法强制iText

    Paragraph paragraph = new Paragraph("");
    paragraph.setKeepTogether(false);
    

    PdfPTable table = new PdfPTable(numberOfColumns);
    table.setKeepTogether(false);
    

    正如您在API 中看到的:

    protected boolean keeptogether
    //Does the paragraph has to be kept together on 1 page.
    

    【讨论】:

    • 内容本来就是这样的。我希望它真正打破。可能我需要更清楚地说这段代码上方有更多内容,而这段代码在下一页中添加了内容,因为它没有足够的空间容纳。它不想打破自己并将内容分散在两页中。我将对上述问题进行一些更改,以使其更清楚。
    • 如果你想打破它们,只需将它们分成不同的单元并分别管理......
    • 它的随机内容,来自解析器。所以破坏它们不在我的控制范围内
    • 我不明白你想要做什么...... ;) 你能编辑你的问题并更详细地解释你的意见和需求吗??
    猜你喜欢
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2015-04-19
    • 2015-06-04
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多