Chirag B Ответов: 2

Невозможно открыть PDF файл с помощью объекта iTextSharp PdfReader


Я пытаюсь сгенерировать PDF-файл из файла шаблона и файла FDF.
например,
PDF-файл = файл шаблона + файл FDF

PDF-файл успешно генерируется с помощью шаблонов и файлов fdf и может быть открыт вручную с помощью Acrobat Pdf.

Однако я не могу открыть сгенерированный pdf-файл с помощью объекта PdfReader iTextSharp.
например,
PdfReader obj = новый PdfReader(outputFileName);

Я получаю следующую ошибку в приведенной выше строке:
Ошибка: индекс был вне диапазона. Должен быть неотрицательным и меньше размера коллекции.
Имя параметра: индекс

Вот метод и клиентский вызов метода.

1) Правильно ли я использую метод создания PDF-файла? Если нет, то каков правильный метод?
2) есть ли какая-либо известная проблема с PdfReader?

Любая помощь будет очень признательна.


public static void GenerateFormWithData(string formFilename, string fdfFileName, string outputFileName)
        {
            File.Copy(formFilename, outputFileName, true);

            using (FileStream outputStream = new FileStream(outputFileName, FileMode.Open))
            {
                FdfReader fdfReader = new FdfReader(fdfFileName);
                PdfReader formReader = new PdfReader(fdfReader.FileSpec);
                using (PdfStamper pdfStamper = new PdfStamper(formReader, outputStream))
                {
                    AcroFields pdfForm = pdfStamper.AcroFields;

                    pdfForm.SetFields(fdfReader);
                    pdfStamper.FormFlattening = true;
                    pdfStamper.Writer.CloseStream = false;

                    pdfStamper.Close();
                    outputStream.Close();
                }
                fdfReader.Close();
                formReader.Close();
            }
	PdfReader obj = new PdfReader(outputFileName); // ERROR on this line
            // Note: I am able to open the outputFileName when I double click on the file in Windows Explorer. But not able to read the file using PdfReader after generating it.

        }


            // Client Call
            string formFile = Path.Combine(defaultPath, "MyTemplate.pdf");
            string fdfFile = Path.Combine(defaultPath, "FormDataFile.fdf");
            string outFile = Path.Combine(defaultPath, "MyOutput.pdf");
            PdfLibrary.GenerateFormWithData(formFile, fdfFile, outFile);

2 Ответов

Рейтинг:
1

MayurDighe

Привет Чираг Б...

using сам оператор вызывает метод Dispose для объекта, используемого в нем.

Итак ... удалите эти сквозные строки из вашего кода и попробуйте отладить его.

using (FileStream outputStream = new FileStream(outputFileName, FileMode.Open))
            {
                FdfReader fdfReader = new FdfReader(fdfFileName);
                PdfReader formReader = new PdfReader(fdfReader.FileSpec);
                using (PdfStamper pdfStamper = 
                               new PdfStamper(formReader, outputStream))
                {
                    AcroFields pdfForm = pdfStamper.AcroFields;
 
                    pdfForm.SetFields(fdfReader);
                    pdfStamper.FormFlattening = true;
                    pdfStamper.Writer.CloseStream = false;
 
                 pdfStamper.Close(); 
                    outputStream.Close();
                }
                fdfReader.Close();
                formReader.Close();
            }



Счастливого Программирования...:-)


Рейтинг:
1

nachia

Можно ли импортировать аннотацию fdf?


Dave Kreskowiak

Напишите свой собственный вопрос с соответствующими деталями. Не воскрешайте вопрос трехлетней давности, который не имеет ничего общего с вашим.