我需要在特定位置添加表格并在所有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);
}
}
答案 0 :(得分:0)
目前还不清楚您要达到什么目标,所以我做了几个假设。
首先:您从头创建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-float-float-int-com.itextpdf.layout.property.TextAlignment-com.itextpdf.layout.property.VerticalAlignment-float-