2016-01-24 3 views
1

Я создаю PDF, добавив один PdfPTable, который вмещает несколько страниц. Теперь я хочу добавить верхний и нижний колонтитул на все эти страницы, но он отображается только на первой странице. Также поля работают неправильно.iTextSharp - Верхний и нижний колонтитулы для всех страниц

Я переопределяю OnStartPage/OnEndPage события класса PdfPageEventHelper.

Просьба предложить лучший способ включения верхних и нижних колонтитулов.

Благодаря

+0

Пожалуйста, покажите свой код, который * отображается только на первой странице *, чтобы мы могли рассказать вам, как его исправить. – mkl

+0

Возможный дубликат [Верхний и нижний колонтитулы в ITextSharp] (http://stackoverflow.com/questions/34484244/header-and-footer-in-itextsharp) –

ответ

2

Правило № 1: не используйте OnStartPage(), чтобы добавить верхние и нижние колонтитулы. Используйте метод OnEndPage() только для добавления заголовка и нижнего колонтитула.

Правило №2: не добавлять содержимое объекта Document, переданного в качестве параметра методу события. Используйте вместо этого DirectContentPdfWriter.

Правило № 3: читать documentation и посмотреть на примеры и Q & Как отмечено header и footer

Вы заметите, что ваш вопрос является дубликатом:

Это ответ на ваш вопрос: Просьбы предложить лучший способ включить верхние и нижние колонтитулы.

Ваш вопрос о «наценки не работает правильно», вероятно, ответил здесь: Why is my content overlapping with my footer? Однако, говоря «поля не работают правильно» это не актуальный вопрос. Если я скажу своему врачу: «Мне плохо, пожалуйста, помогите мне!» Я не могу ожидать, что он мне поможет, если я не дам ему больше информации. Когда я добавляю верхние и нижние колонтитулы, поля работают правильно. Если это не сработает, вы делаете это неправильно ...

То же самое верно и для вашего утверждения, что верхний и нижний колонтитул "отображается только на первой странице". Это просто неверно с нашей точки зрения. Если добавить событие в PdfWriter как это:

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); 
Header event = new Header(); 
writer.setPageEvent(event); 

Затем метод OnEndPage() вызывается каждый раз, когда страница финализации.

+0

Спасибо, теперь верхний колонтитул на всех страницах. Но у меня есть логотип в заголовке, который выравнивается по центру страницы и нижнего колонтитула содержит строку, я попытался использовать html и преобразовать в pdf-контент, но строка не отображается в нижнем колонтитуле, а логотип смещен в самый правый угол внутри заголовка. – saurabh

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