итерация документа Нижний колонтитул на каждой странице - Spring MVC - PullRequest
0 голосов
/ 11 февраля 2012

Я использовал SpringP AbstractPdfView для генерации PDF-документов.Я пытаюсь добавить нижний колонтитул на каждую страницу документа, но он не работает.Это то, что у меня есть до сих пор ..

  protected void buildPdfDocument(@SuppressWarnings("rawtypes") Map map, Document doc,
        PdfWriter writer, HttpServletRequest req, HttpServletResponse response)
        throws Exception {

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment;filename=UserAccessReport.pdf");

    doc.setPageSize(PageSize.LEGAL.rotate());

    String date = new SimpleDateFormat("MM/dd/yyyy").format(new Date()).toString();
    String headerString = "Report Date: "+date;

    HeaderFooter hf = new HeaderFooter(new Phrase(headerString), true);
    doc.setFooter(hf);
    doc.newPage();

    PdfPTable table = new PdfPTable(8); 
    table.setHorizontalAlignment(Element.ALIGN_CENTER);
    ///add table cells

    doc.add(table);
}

Приведенный выше код не добавляет нижний колонтитул в документ.

Если я добавлю элемент HeaderFooter в документ перед вызовом newPage, как...

            HeaderFooter hf = new HeaderFooter(new Phrase(headerString), true);
    doc.setFooter(hf);
    doc.add(hf);
            doc.newPage();

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

Если я переместил добавление в add после вызова newPage, то опять же, после таблицы нет нижнего колонтитула.

Ответы [ 3 ]

1 голос
/ 09 августа 2012

вы в очень старой версии ... новая версия приведена ниже

HeaderFooter hfFooter = new HeaderFooter(new Phrase("My Footer", new    Font(FontFactory.GetFont("Tahoma", 10, 0))), false);
hfFooter.Alignment = 1;
docMyPDFDocument.Footer = hfFooter;
0 голосов
/ 18 декабря 2014

Это сработало для меня: Просто переопределите метод buildPdfMetadata.

public class SomePdfView extends AbstractPdfView {
    @Override
    protected void buildPdfMetadata(Map<String, Object> model, Document document, HttpServletRequest request) {
        HeaderFooter footer = new HeaderFooter(new Phrase("Footer"), false);
        footer.setAlignment(Element.ALIGN_CENTER);
        footer.setBorder(Rectangle.TOP);
        document.setFooter(footer);
        super.buildPdfMetadata(model, document, request);
    }
}
0 голосов
/ 16 октября 2012

Я также использую нижний колонтитул в контексте Spring и ваш пример

HeaderFooter hf = new HeaderFooter(new Phrase(headerString), true);
doc.setFooter(hf);

отлично работает для меня, за исключением того, что я не звоню newPage(). Почему этот звонок? Вы хотите пустую первую страницу? Вы пробовали без звонка newPage()?

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