首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将iTextSharp空引用错误与所有PDF和非空流一起使用PdfStamper时

将iTextSharp空引用错误与所有PDF和非空流一起使用PdfStamper时
EN

Stack Overflow用户
提问于 2022-08-28 23:57:01
回答 2查看 201关注 0票数 0

我正在尝试使用ITextSharp (5.5.13.3版)在C#控制台应用程序中打开一个pdf文件来填充表单字段,但是当我试图用流实例化PdfStamper时,我就被困住了。我已经尝试了大约十几个pdf可填充文件(没有锁定,也没有加密)和验证权限(设置为"EveryOne"),但是不知道什么是null!从我所知道的情况来看,流是有效的,而PdfReader实际上正在打开该文件。这是我第一次尝试这样做,但找不到一个真正的工作例子(我从一个网站上复制了这个例子,但它不起作用)。会不会是流错了类型?错误信息是:

代码语言:javascript
运行
复制
System.NullReferenceException: 'Object reference not set to an instance of an object.'

由于阅读器(我可以调试和查看pdf文件和表单字段的所有属性,没有问题)和流都被实例化了,这会是什么呢?

代码语言:javascript
运行
复制
        using (MemoryStream ms = new MemoryStream())
        {              

            PdfReader pdfReader = new PdfReader("D:/TestData/Direct Deposit Signup Form.pdf");

            using (PdfStamper pdfStamper = new PdfStamper(pdfReader, ms, '\0', true))
            { ... }

错误出现在

使用pdfStamper

线路。文件在哪里和安全设置似乎都不重要。

完全错误(不过,和往常一样,谁知道到底发生了什么,这是如此的神秘):

代码语言:javascript
运行
复制
    System.NullReferenceException
  HResult=0x80004003
  Message=Object reference not set to an instance of an object.
  Source=itextsharp
  StackTrace:
   at iTextSharp.text.Version.GetInstance()

我以前没有使用过这个工具,但是我希望看到一个有用的例子--也许MemoryStream就是问题所在。不知道该从哪里开始找。也许我应该将它们的源代码下载到另一个项目中并进行调试?有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-10-17 02:57:26

我在用VS 2022。在“调试选项”中,“打开”“只是我的代码”为我工作。这里提到的是iTextSharp GetInstance - NullReferenceException错误

票数 1
EN

Stack Overflow用户

发布于 2022-08-29 04:10:51

找到一个解决方案:使用PDFSharp!它只是起作用了-下面是一个例子

代码语言:javascript
运行
复制
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

namespace WPFfiller3
{
    public class Program
    {
        static void Main(string[] args)
        {
            FillPdfFields(@"D:\TestData\SampleForm-1.pdf", @"D:\TestData\SampleForm-1-FILLED.pdf");
        }

        private static void FillPdfFields(string SourcePDF, string DestinationPDF)
        {
            using (PdfDocument pd = PdfReader.Open(SourcePDF, PdfDocumentOpenMode.Modify))
            {
                int TotalFields = pd.AcroForm.Fields.Count;
                for (int i = 0; i < TotalFields; i++)
                {
                    pd.AcroForm.Fields[i].Value = new PdfString("test123");
                }
                pd.Save(DestinationPDF);
            }
        }
    }
}

使用的测试PDF文件在这里SampleForm-1.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73523079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档