Продолжить таблицу до следующей страницы PDF и печатать текст между - PullRequest
1 голос
/ 13 января 2012

Я не знаю, возможно ли то, что я пытаюсь сделать, и это может быть слишком много работы для чего-то очень незначительного.У меня есть сервлет, который создает PDF.Я использую iText для записи в созданный PDF, в моем PDF у меня есть динамическая таблица, которая может изменить размер документа.Я хотел бы напечатать « Продолжение на следующей странице » в нижней части документа, когда потребуется перейти на следующую страницу.Проблема в том, что я никогда не узнаю, где в моем документе происходит разрыв страницы.

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

РЕДАКТИРОВАТЬ: Возможно, разговариваю сам с собой, но я думаю, что это возможно только в том случае, если есть метод, который понимает, что новая страницатолько что был создан.

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Вы можете попытаться применить этот фрагмент в своем классе генератора PDF:

private static final float FOOTER_MARGIN = 15;
private static final float PAGE_MARGIN_LEFT = 36;
private static final float PAGE_MARGIN_RIGHT = 36;
private static final float PAGE_MARGIN_BOTTOM = 36 + FOOTER_MARGIN;
private static final float PAGE_MARGIN_TOP = 36;
private static final Rectangle PAGE_SIZE = PageSize.A4;

//Put this in your generator method
//..
Document document = new Document(PAGE_SIZE, 
         PAGE_MARGIN_LEFT, PAGE_MARGIN_RIGHT, PAGE_MARGIN_BOTTOM, MARGIN_TOP); 
PdfWriter writer = PdfWriter.getInstance(document, OUTPUT_STREAM); 
writer.setPageEvent(new HeaderFooter()); 
//..

private class HeaderFooter extends PdfPageEventHelper {

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        Phrase footerText = new Phrase("Continued On Next Page");
        ColumnText.showTextAligned(
                writer.getDirectContent(),
                Element.ALIGN_LEFT, footerText,
                PAGE_MARGIN_LEFT, PAGE_MARGIN_BOTTOM - FOOTER_MARGIN, 0);
    }
}

К вашему сведению, есть примеров iText в вашем случае поискадля нижний колонтитул .Надеюсь, это поможет.

0 голосов
/ 27 января 2012

Возможно, вы можете использовать setSkipLastFooter (логическое значение). Таким образом, он напечатает строку нижнего колонтитула вашей таблицы, в которой текст будет продолжен на каждой странице, кроме последней. Вы должны быть уверены, что setFooterRows на столе.

Вы также можете использовать PdfPageEventHelper , который позволяет перехватывать различные события страницы, включая событие конечной страницы. Внутри метода onEndPage вы можете добавить к документу текст «Продолжение на следующей странице».

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