我正在尝试设置一个页面,其中文本填充在文本框中,然后溢出到页面上的另一个文本框。我设置了一个矩形并将文本发送给它,但我不知道如何找到不适合的文本。
我记得看到一个向文档(或表格或其他东西)添加单词的功能,它具有“返回剩余文本”功能。我再也找不到那个功能了。
如何获取不适合返回的文本,以便将其分配给变量以发送到下一个文本框?
我正在尝试设置一个页面,其中文本填充在文本框中,然后溢出到页面上的另一个文本框。我设置了一个矩形并将文本发送给它,但我不知道如何找到不适合的文本。
我记得看到一个向文档(或表格或其他东西)添加单词的功能,它具有“返回剩余文本”功能。我再也找不到那个功能了。
如何获取不适合返回的文本,以便将其分配给变量以发送到下一个文本框?
您正在寻找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();
结果: