2012-02-10 2 views
0

Я использовал SpringP AbstractView для создания Pdf-документов. Я пытаюсь добавить нижний колонтитул на каждую страницу документа, но он, похоже, не работает. Это то, что у меня есть до сих пор.itext document Нижний колонтитул на каждой странице - Spring MVC

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(); 

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

Если я переехал добавить после вызова NEWPAGE, опять же, нет сноски после таблицы ..

ответ

1

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

HeaderFooter hfFooter = new HeaderFooter(new Phrase("My Footer", new Font(FontFactory.GetFont("Tahoma", 10, 0))), false); 
hfFooter.Alignment = 1; 
docMyPDFDocument.Footer = hfFooter; 
+0

Spring не поддерживает новые версии iText из коробки. Они все еще застряли в 2.7. Я просто пошел с оригинальными версиями весны. Конечно, есть способы расширить Spring API и использовать новые библиотеки iText .. но я просто хотел использовать встроенную поддержку .. http://stackoverflow.com/questions/9161956/spring -mvc-abstractpdfview-IText-банку-версия – RKodakandla

0

I «м также с использованием нижнего колонтитула в контексте Spring и ваш пример

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

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

0

Это сработало для меня: Просто переопределите метод 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); 
    } 
} 
Смежные вопросы