[英]how to add a table to a page with header and footer using itext 7
我需要在特定位置添加一個表格,並在所有 pdf 頁面中重復,而不會干擾頁眉和頁腳 這是我的代碼
PdfEventHandler handler = new PdfEventHandler(header, x,y);
pdf.addEventHandler(PdfDocumentEvent.START_PAGE, handler);
Table table = new Table(getcolumnsWidth(pdfColumns, tableWidth));
String line = br.readLine();
process(table, line, true);
while ((line = br.readLine()) != null) {
process(table, line, false);
}
br.close();
document.add(table);
和
public class PdfEventHandler implements IEventHandler {
private String header;
private int x,y;
public PdfEventHandler(String header,int x , int y) {
this.header =header;
this.x = x; this.y =y;
}
@Override
public void handleEvent(Event event) {
PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
PdfDocument pdfDoc = docEvent.getDocument();
PdfPage page = docEvent.getPage();
PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDoc);
Rectangle area = page.getPageSize();
int pageHeight = (int) area.getHeight();
Canvas canvas = new Canvas(pdfCanvas, pdfDoc, area);
canvas.showTextAligned(header, x, y, TextAlignment.CENTER);
}
}
尚不清楚您要實現什么目標,因此我做了幾個假設。
第一:您從頭創建pdf(沒有源文件)。 第二:您想在每個頁面上放置一個表格(到特定區域),並且該表格不應干擾其他內容。
那么如何在每個頁面上放置一個表(或另一個元素)呢? 可以為其使用事件處理程序。 請查看下一個示例: https : //github.com/itext/i7js-examples/blob/develop/src/test/java/com/itextpdf/samples/sandbox/events/TableFooter.java在此添加了一個表創建新頁面后的頁腳。
至於您的代碼,我相信您應該使用需要頁碼的showTextAligned: http ://itextsupport.com/apidocs/itext7/latest/com/itextpdf/layout/RootElement.html#showTextAligned-com.itextpdf.layout .element.Paragraph浮子浮子-INT-com.itextpdf.layout.property.TextAlignment-com.itextpdf.layout.property.VerticalAlignment-浮子
使用 table.setRelativePosition(0, 0, 0, 0) 將表格內容放在 pdf 上重復的標題之后
for (int i = 0; i < 2; i++) {
table.addCell("title 1");
table.addCell("title 2");
//header row and footer
}
table.setHeaderRows(2); //two header rows ...
table.setFooterRows(1); // Of which one is a footer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.