Добавьте заголовок только к первой PDF-странице, используя Itext в Java - PullRequest
0 голосов
/ 20 декабря 2018

Я использую iText для создания PDF-документов в моем проекте, и он работает нормально.Я добавляю верхний и нижний колонтитулы в метод onEndPage с writer.setPageEvent.

@Override
    public void onEndPage(PdfWriter writer, Document document) {
        try {
            addHeader(writer);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        addFooter(writer);
    }

Моя проблема заключается в том, что я хочу отображать верхний колонтитул только на первой странице, а не на последующих.Но заголовок отображается на всех страницах.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Если вы хотите добавить заголовок только на одной странице, в частности на первой странице документа, вам вообще не нужно использовать события страницы!События страницы хороши для добавления похожих вещей на многих страницах или даже для добавления материалов только на нескольких страницах, которые вы определяете с помощью событий, но для рассматриваемого случая, добавляя заголовок только к первой странице, они вообще не нужны.

Таким образом, в качестве альтернативы метке в прослушивателе событий, предложенной @Soufiane Sakhi в своем ответе, вы можете полностью удалить вызов addHeader(writer) из метода onEndPage:

public void onEndPage(PdfWriter writer, Document document) {
    addFooter(writer);
}

и выполните его сразу после открытия документа (когда первая страница является текущей страницей)

Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
writer.setPageEvent(YOUR_PAGE_EVENT_LISTENER);
document.open();
addHeader(writer);
0 голосов
/ 20 декабря 2018

Вы можете добавить поле в PdfPageEventHelper, чтобы проверить, является ли это первой страницей, примерно так:

private boolean firstPage = true;

@Override
public void onEndPage(PdfWriter writer, Document document) {
    try {
        if (firstPage) {
            firstPage = false;
            addHeader(writer);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    addFooter(writer);
}
...