Не удается получить доступ к закрытому потоку Itext7 - PullRequest
0 голосов
/ 29 января 2019

Я использую itext7 для работы с PDF.Я пытаюсь заполнить поля формы методом field.setValue.Мой объект _Reader заполняется на уровне конструктора и используется в полях формы Добавление и Получение.Но при сохранении значения поля формы при закрытии объекта PdfDocument перехватывается следующее исключение:

at System.IO.__Error.StreamIsClosed()
at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at iText.IO.Source.OutputStream`1.Write(Byte[] b, Int32 off, Int32 len)
at iText.IO.Source.OutputStream`1.WriteInteger(Int32 value)
at iText.Kernel.Pdf.PdfWriter.WriteToBody(PdfObject pdfObj)
at iText.Kernel.Pdf.PdfWriter.FlushObject(PdfObject pdfObject, Boolean 
canBeInObjStm)
at iText.Kernel.Pdf.PdfDocument.FlushObject(PdfObject pdfObject, Boolean 
canBeInObjStm)
at iText.Kernel.Pdf.PdfObject.Flush(Boolean canBeInObjStm)
at iText.Kernel.Pdf.PdfPage.Flush(Boolean flushResourcesContentStreams)
at iText.Kernel.Pdf.PdfPage.Flush()
at iText.Kernel.Pdf.PdfDocument.Close()

Фрагмент кода выглядит следующим образом:

using (var memoryStream = new MemoryStream())
        {
            PdfDocument document = new PdfDocument(_Reader, new PdfWriter(memoryStream));
            PdfAcroForm Form = PdfAcroForm.GetAcroForm(document, true);
            foreach (PDFField Field in PDFFields)
            {
                PdfFormField formField = Form.GetField(Field.Name);

                switch (Field.Type)
                {
                    case PDF_FIELD_TYPE.TEXTBOX:
                        if (!string.IsNullOrEmpty(Field.Value))
                            formField.SetValue(Field.Value);
                        else
                            formField.SetValue(string.Empty);
                        break;
                }
            }
            document.Close();
            byte[] PDFBytes = ((MemoryStream)memoryStream).ToArray();

Заранее спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...