Существуют различные способы, чтобы сделать это.
Первый способ объясняется в моем ответе на вопрос What's an easy to print "first right, then down"?
В TableTemplate примере, мы пишем полную таблицу к PdfTemplate
, что значительно больше, чем на одной странице:
PdfPTable table = new PdfPTable(15);
table.setTotalWidth(1500);
PdfPCell cell;
for (int r = 'A'; r <= 'Z'; r++) {
for (int c = 1; c <= 15; c++) {
cell = new PdfPCell();
cell.setFixedHeight(50);
cell.addElement(new Paragraph(String.valueOf((char) r) + String.valueOf(c)));
table.addCell(cell);
}
}
PdfContentByte canvas = writer.getDirectContent();
PdfTemplate tableTemplate = canvas.createTemplate(1500, 1300);
table.writeSelectedRows(0, -1, 0, 1300, tableTemplate);
После того, как таблица будет завершена, вы можете затем распространять объект tableTemplate
на разных страницах:
for (int j = 0; j < 1500; j += 500) {
for (int i = 1300; i > 0; i -= 650) {
clip = canvas.createTemplate(500, 650);
clip.addTemplate(tableTemplate, -j, 650 - i);
canvas.addTemplate(clip, 36, 156);
document.newPage();
}
}
Если это то, что вы хотите сделать, то ваш вопрос является дубликатом itext -- what's an easy to print "first right, then down"
Второй способ является использование метода writeSelectedRows()
. В этом случае, ваш вопрос является дубликатом Auto Split Columns using iTextSharp и Itextsharp: Adjust 2 elements on exactly one page
Zhang пример из второго издания IText в действии показывает, как работает этот метод:
PdfContentByte canvas = writer.getDirectContent();
// draw the first two columns on one page
table.writeSelectedRows(0, 2, 0, -1, 236, 806, canvas);
document.newPage();
// draw the remaining two columns on the next page
table.writeSelectedRows(2, -1, 0, -1, 36, 806, canvas);
В первый раз, мы используем writeSelectedRows
, мы рисуем столбцы с 0 по 2 (не включены) и строку 0 в общее количество строк на странице. Во второй раз мы рисуем все столбцы, начиная со столбца 2 и всех строк.
Третий способ: - это приспособить размер вашей страницы к размеру вашего стола. Это объясняется в моем ответе на вопрос How to define the page size based on the content?
Возможный дубликат [Столбцы Auto Split с использованием iTextSharp] (http://stackoverflow.com/questions/20042287/auto-split-columns-using-itextsharp) – Michael