Я не совсем понял, как вы хотите, чтобы ваша таблица была обработана при разбиении, и предположил, что вы ищете макет из двух столбцов.Если это так, то для вас есть предопределенный класс ColumnDocumentRenderer
.Если он установлен для экземпляра документа, он позволяет расположить содержимое документа в столбцы.
Итак, я определил столбцы:
Rectangle pageSize = pdfDocument.getDefaultPageSize();
Rectangle[] areas = new Rectangle[2];
areas[0] = new Rectangle(36, 36, ((float) pageSize.getWidth() / 2) - 35.75f, pageSize.getHeight() - 72);
areas[1] = new Rectangle((float) pageSize.getWidth() / 2 - 0.25f, 36, ((float) pageSize.getWidth() / 2) - 35.75f , pageSize.getHeight() - 72);
И затем я применил рендерер кЭкземпляр документа: layoutDocument.setRenderer(new ColumnDocumentRenderer(layoutDocument, areas));
Результат разделения выглядит следующим образом:
Полный код:
@Test
public void tableTest02() throws Exception {
String outFileName = destinationFolder + "tableTest02.pdf";
String cmpFileName = sourceFolder + "cmp_tableTest02.pdf";
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName));
Document layoutDocument = new Document(pdfDocument);
Table table = new Table(3);
table.setWidth(UnitValue.createPercentValue(100));
Rectangle pageSize = pdfDocument.getDefaultPageSize();
Rectangle[] areas = new Rectangle[2];
areas[0] = new Rectangle(36, 36, ((float) pageSize.getWidth() / 2) - 35.75f, pageSize.getHeight() - 72);
areas[1] = new Rectangle((float) pageSize.getWidth() / 2 - 0.25f, 36, ((float) pageSize.getWidth() / 2) - 35.75f , pageSize.getHeight() - 72);
layoutDocument.setRenderer(new ColumnDocumentRenderer(layoutDocument, areas));
// header
for(int i=0;i<1;i++) {
table.addHeaderCell(new Cell().add(new Paragraph("Number")).setBackgroundColor(new DeviceRgb(74,189,172)));
table.addHeaderCell(new Cell().add(new Paragraph("Firstname")).setBackgroundColor(new DeviceRgb(74,189,172)));
table.addHeaderCell(new Cell().add(new Paragraph("Lastname")).setBackgroundColor(new DeviceRgb(74,189,172)));
}
// table
for(int i=0;i<500;i++){
table.addCell(new Cell().add(new Paragraph((i + 1)+"")));
table.addCell(new Cell().add(new Paragraph("Hello")));
table.addCell(new Cell().add(new Paragraph("World")));
}
layoutDocument.add(table);
pdfDocument.close();
Assert.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff"));
}
сложным моментом было сворачивание границ таблицы, но, увеличив ширину на 0,25f и переместив правый столбец на 0,25f влево, я получил границы для размещения друг на друге.