2012-01-13 2 views
1

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

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

EDIT: Возможно, разговаривать сам с собой, но единственный способ, который, по моему мнению, возможен, - это метод, который понимает, что только что была создана новая страница.

ответ

0

Вы можете попробовать применить этот фрагмент кода в своем классе в формате 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); 
    } 
} 

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

0

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

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

Смежные вопросы