Вот мое решение моего собственного вопроса:
Я определяю два экземпляра PdfTemplate
, но остаюсь только с одним экземпляром ColumnText
. PdfTemplate
, связанный с ColumnText
, переключается, и метод go()
вызывается один раз для каждого шаблона.
Соответствующая часть кода из моего вопроса должна быть изменена следующим образом:
final PdfTemplate textTemplate1 = PdfTemplate.createTemplate(pdfWriter, textWidth, textHeight);
final PdfTemplate textTemplate2 = PdfTemplate.createTemplate(pdfWriter, textWidth, textHeight);
final ColumnText columnText = new ColumnText(textTemplate1);
columnText.setSimpleColumn(0f, 0f, textTemplate1.getWidth(), textTemplate1.getHeight());
columnText.addElement(paragraph);
columnText.go();
columnText.setCanvas(textTemplate2);
columnText.setSimpleColumn(0f, 0f, textTemplate2.getWidth(), textTemplate2.getHeight());
columnText.go();
Метод go()
возвращает статус int
. Я могу проверить этот статус, если не уверен, есть ли еще текст, который не уместился в последнем шаблоне.
final int goResult = columnText.go();
if (ColumnText.hasMoreText(goResult)) {
...
}
Обратите внимание, что мое решение основано на этом примере:
https://developers.itextpdf.com/question/how-continue-field-output-second-page