java - 从 OpenPDF 获取溢出文本
问题描述
我正在尝试设置一个页面,其中文本填充在文本框中,然后溢出到页面上的另一个文本框。我设置了一个矩形并将文本发送给它,但我不知道如何找到不适合的文本。
我记得看到一个向文档(或表格或其他东西)添加单词的功能,它具有“返回剩余文本”功能。我再也找不到那个功能了。
如何获取不适合返回的文本,以便将其分配给变量以发送到下一个文本框?
解决方案
您正在寻找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();
结果:
推荐阅读
- angular - 为 mat-slide-toggle 按钮添加 Angular 7 芯片,当它们处于 On 状态时
- .htaccess - 从特定 URL Htaccess 中删除“www”
- python - 按升序绘制具有 x 轴类别的条形图
- c# - For Each Loop 迭代所有表名(SQL)
- c# - 下拉列表如何根据选择隐藏一个表?
- python - Cloud Tasks API 在任务级别设置重试
- python - 用漂亮的汤解析 span
- amazon-web-services - 出现 InvalidSignatureException 错误,而我在机器上的时间是正确的
- c# - 如何从线程(非主线程)使用 this.Dispose()
- sql-server - SSIS 包 - 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误