PdfStamper Я перехожу к этому методу, который удаляется в конце метода - почему и как его остановить? Я пытаюсь создать объект страницы из шаблона, который я могу добавить в число PdfStamper X раз.PdfStamper размещается
//real code
public void DoSpecialAction(PdfStamper pdfStamper)
{
using (var pdfTemplate = new PdfReader(_extraPageTemplatePath))
using (var pdfReader = new PdfReader(pdfTemplate))
{
PdfImportedPage page = pdfStamper.GetImportedPage(pdfReader, 1);
pdfStamper.InsertPage(3, pdfReader.GetPageSize(1));
PdfContentByte pb = pdfStamper.GetUnderContent(3);
pb.AddTemplate(page, 0, 0);
}
}
структура программы выглядит следующим образом:
//psuedocode
class PrintFieldsToPdf {
foreach (normalfield) {
PrintNormalFields();
}
foreach (specialaction) {
DoSpecialAction(pdfStamper);
}
pdfStamper.Close(); //at this point the object has been deallocated
}
Метательный следующее исключение:
An exception of type 'System.ObjectDisposedException' occurred in mscorlib.dll but was not handled in user code
Additional information: Cannot access a closed file.
Можете ли вы предоставить [краткое, самодостаточно, компилируемый, пример] (http://sscce.org/)? – mkl
Также укажите «disposed». Это очень странное слово. Вы имеете в виду, что он становится «нулевым»? И что такое экземпляр 'pdfTemplate'? Почему вы создаете два разных экземпляра 'PdfReader'? Ваш код выглядит неловко. Если вы хотите добавить * одну и ту же страницу * несколько раз, ваш подход приведет к раздутому файлу с теми же байтами, которые повторяются снова и снова. Используя элементарную логику, вы должны иметь возможность добавлять одну и ту же страницу несколько раз * повторно использовать * форму XObject. –
PdfStamper поступает извне этого метода. Он заключен в класс, который в общем случае заполняет форму полями. Им все равно, что это за поля. Этот конкретный метод является частью класса, который обеспечивает дополнительные специальные действия для форм разных типов. Чтобы сохранить способность популяризации не заботиться о том, какую форму она заполняет, у нее есть словарь полей, который будет вызывать специальные действия и специальные действия, которые запускаются. Это специальное действие добавит дополнительную страницу для обработки переполнения текста из определенного поля. – Mark