как добавить таблицу на страницу с верхним и нижним колонтитулом с помощью itext 7 - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно добавить таблицу в определенной позиции и повторяться на всех страницах 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-файла enter image description here

1 Ответ

0 голосов
/ 09 января 2019

Это очень неясно, чего вы пытаетесь достичь, поэтому я сделал несколько предположений.

Во-первых: вы создаете свой 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-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...