【问题标题】:how to add a table to a page with header and footer using itext 7如何使用itext 7将表格添加到带有页眉和页脚的页面
【发布时间】:2018-12-12 06:21:38
【问题描述】:

我需要在特定位置添加一个表格并在所有 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文件

【问题讨论】:

标签: java pdf itext7


【解决方案1】:

这很不清楚你要达到什么目标,所以我做了几个假设。

首先:您从头开始创建 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-

【讨论】:

    【解决方案2】:

    您可以使用table.setRelativePosition(0, 0, 0, 0) 将表格内容放在 pdf 上重复的标题之后

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2020-04-26
      • 2015-12-05
      • 2021-08-14
      • 1970-01-01
      • 2013-11-20
      • 2021-03-22
      • 2012-12-18
      相关资源
      最近更新 更多