iTextSharp: невозможно присоединить PageEvent к устройству записи PdfSmartCopy

Этот код с использованием ItextSharp 5.5.10:

 var msOutput = new MemoryStream();
 var document = new Document(PageSize.A4, 0, 0, 0, 20);
 var writer = new PdfSmartCopy(document, msOutput);
 writer.PageEvent = new MyHeaderFooterEvents();

Выдает "Операция недопустима из-за текущего состояния объекта". при назначении "writer.PageEvent" (также происходит сбой при выполнении нового Document (без параметров) ().

Когда этот код работает отлично:

 var outputStream = new MemoryStream();
 var document = new Document(PageSize.A4, leftMargin, rightMargin, topMargin, bottomMargin);
 var writer = PdfWriter.GetInstance(document, outputStream);
 writer.PageEvent = new MyHeaderFooterEvents();

Любая идея?

1 ответ

Решение

Pdf[Smart]Copy классы предназначены только для чтения. Это задокументировано в необработанном исходном коде:

/// Setting page events isn't possible with Pdf(Smart)Copy.
/// Use the PageStamp class if you want to add content to copied pages.

Примечание для команды разработчиков iText - если XML-документация комментирует с использованием <summary> теги используются вместо текущего стиля, комментарии будут отображаться в Visual Studio IntelliSense.

Другие вопросы по тегам