2016-01-27 4 views
0

У меня есть 200 columns.I хочет установить 50 столбцов на одной странице, Всего-page.I использовалиКак разделять столбцы в itextsharp?

doc.NewPage() 

, но это не влияет на моей странице? Как я могу разделить этот столбец как 200 50 в 4 pages.Now это выглядит как

enter image description here

+0

Возможный дубликат [Столбцы Auto Split с использованием iTextSharp] (http://stackoverflow.com/questions/20042287/auto-split-columns-using-itextsharp) – Michael

ответ

1

Существуют различные способы, чтобы сделать это.

Первый способ объясняется в моем ответе на вопрос 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?

+0

я не сделал получить вышеупомянутые идеи. –

+0

@SemilSebastian Вы попробовали примеры? –