首页 > 解决方案 > 从 OpenPDF 获取溢出文本

问题描述

我正在尝试设置一个页面,其中文本填充在文本框中,然后溢出到页面上的另一个文本框。我设置了一个矩形并将文本发送给它,但我不知道如何找到不适合的文本。

我记得看到一个向文档(或表格或其他东西)添加单词的功能,它具有“返回剩余文本”功能。我再也找不到那个功能了。

如何获取不适合返回的文本,以便将其分配给变量以发送到下一个文本框?

标签: javaitextpdf-generationopenpdf

解决方案


您正在寻找ColumnText可用于在定义的形状内呈现文本的方法。该go()方法返回常量NO_MORE_TEXT(1) 如果文本适合形状或NO_MORE_COLUMN(2) 如果文本溢出。据我所知,没有办法直接获得剩余的文本。但是,您不需要在下一个文本框中呈现它的文本。

如果文本溢出,您可以分配一个新列并go()再次调用。重复此过程,直到绘制完所有文本。

这是一个带有 3 个简单矩形框的示例:

Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("overflow.pdf"));
document.open();

// define text
PdfContentByte canvas = writer.getDirectContent();
ColumnText ct = new ColumnText(canvas);
ct.addElement(new Paragraph(LOREM_IPSUM)); // <- some filler text from constant

// fill first box
ct.setSimpleColumn(50, 735, 400, 800);
int result = ct.go();

// fill second box (if necessary)
if (result == ColumnText.NO_MORE_COLUMN) {
    ct.setSimpleColumn(75, 635, 425, 700);
    result = ct.go();
}

// fill third box (if necessary)
if (result == ColumnText.NO_MORE_COLUMN) {
    ct.setSimpleColumn(100, 535, 450, 600);
    result = ct.go();
}

document.close();

结果:

结果


推荐阅读