2015-05-08 2 views
0

Я делаю PDF-документ с iTextSharp. Я создал заголовок с событием PageEvent, но хочу, чтобы мой заголовок был другим на некоторых страницах. Он работает для установки одного и того же заголовка для всех страниц.Заголовок страницы с iTextSharp

Но, я хочу чего-то другого.

Пример: Страница 1 => Заголовок 1 Страница 2 => Заголовок 1 Страница 3 => Заголовок 2 Страница 4 => Заголовок 2

Я хотел бы решить эту проблему, но проблемы приходят, когда это происходит:

writer.PageEvent=new PDFFooter(params);  
doc.Open(); 

Событие PageEvent должно быть создано выше doc.Open();, когда я положил его ниже, он генерирует ошибку. Я использую C# с Visual Studio Community 2013.

Как я могу это решить? Благодаря!!

+0

Возможный дубликат [Добавить верхний колонтитул для PDF с использованием iTextsharp] (http://stackoverflow.com/questions/18996323/add-header-and-footer-for-pdf-using-itextsharp) – stuartd

+0

Рассмотрите возможность подсчета ' OnEndPage' вызывает и действует в этом методе в зависимости от количества. – mkl

+0

Пожалуйста, прочитайте [The Best iText Questions on StackOverflow] (http://pages.itextpdf.com/ebook-stackoverflow-questions.html) (бесплатная электронная книга), и вы обнаружите, что ваш вопрос является дубликатом [How to создать отчет с динамическим заголовком в PDF с помощью itextsharp?] (http://stackoverflow.com/questions/21628429/itextsharp-how-to-generate-a-report-with-dynamic-header-in-pdf-using-itextsharp) –

ответ

0

Я решил проблему сейчас.

Решение было это:

PDFFooter events=new PDFFooter(); 

PdfWriter writer = PdfWriter.GetInstance(doc, Response.OutputStream); 

doc.Open(); 
foreach (var item in ListReporte) 
{      
    events = new PDFFooter(); 
    writer.PageEvent = events; 
    events.Ciudad = item.Ciudad; 
    events.OnStartPage(writer,doc); 
    //This was the solution 
    if (writer.PageEvent != null) 
     writer.PageEvent = null; 
} 

В каждой итерации, поручаю нуль на PageEvent собственности.

Но сначала я создал объект PDFFooter (класс PDFFooter содержит события OnStartPage и OnEndPages ...). Итак, в этом классе я объявил некоторые атрибуты о данных, которые я хотел отобразить.

Раньше я не мог создать экземпляр класса PDFFooter ниже doc.Open(). Код было так:

writer.PageEvent=new PDFFooter(); 
doc.Open(): 

Итак, я попытался создать Objet первый, а затем установить его PageEvent свойство писательницы объекта (рекомендую это делать). И это сработало.

Он чувствует себя прекрасно.

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