无法使用iTextSharp PdfReader对象打开PDF文件 [英] Unable to open PDF file using iTextSharp PdfReader object

查看:197
本文介绍了无法使用iTextSharp PdfReader对象打开PDF文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从模板文件和FDF文件生成PDF文件。

例如,

PDF文件=模板文件+ FDF​​文件



PDF文件使用模板和fdf文件成功生成,并且能够使用Acrobat Pdf手动打开。



但是,我无法使用iTextSharp的PdfReader对象打开生成的pdf文件。

例如,

PdfReader obj = new PdfReader(outputFileName);



我在上面一行收到以下错误:

错误:索引超出范围。必须是非负数且小于集合的大小。

参数名称:index



以下是方法和客户端调用方法。



1)我使用正确的方法生成PDF文件吗?如果没有,那么正确的方法是什么?

2)PdfReader是否存在任何已知问题?



任何帮助都将非常感激。





I am trying to generate a PDF file from template file and FDF file.
For Example,
PDF File = Template File + FDF File

The PDF file is generated successfully using template and fdf files and able to open it manually using Acrobat Pdf.

However, I am unable to open the generated pdf file using PdfReader object of iTextSharp.
For Example,
PdfReader obj = new PdfReader(outputFileName);

I get the following error on the above line:
Error: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Here is the method and client call to the method.

1) Am I using correct method to generate the PDF file? If not, what is the correct method?
2) Is there any known issue with the PdfReader?

Any help would greatly be appreciated.


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);

推荐答案

你好Chirag B ......



使用语句本身为其中使用的Object调用Dispose方法。



所以..从代码中删除那些Strike Through行并尝试调试它。

Hi Chirag B...

using statement itself calls a Dispose method for an Object used within it.

So.. Remove those Strike Through lines from your code and Try to Debug it.
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();
            }







快乐编程......: - )




Happy Programming...:-)


是否可以导入注释fdf?
Is it possible to import annotation fdf?


这篇关于无法使用iTextSharp PdfReader对象打开PDF文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆