尝试使用PdfStamper和MemoryStream将数据添加到现有PDF

时间:2019-04-17 14:41:51

标签: c# itext memorystream pdfstamper

我的目标是使用SetField从代码中更改PDF,然后使用API​​下载它。 API可以运行,并且可以下载PDF,但未进行任何更改。

工作几天后,我必须寻求帮助。

我想要达到的目的是将更改后的文件取回。 我得到了填充的值,并使用GetField看到该字段已设置,但是再次下载时,PDF中没有任何更改。

这是我使用的代码。

        var pth = $"{Environment.CurrentDirectory}.Services\\Pdf\\plan2.pdf";
        PdfReader pdfReader = null;
        byte[] bytes = File.ReadAllBytes(pth);
        try
        {
            using (MemoryStream outStream = new MemoryStream())
            {
                MemoryStream inputStream = new MemoryStream(bytes);

                pdfReader = new PdfReader(inputStream);

                PdfStamper pdfStamper = new PdfStamper(pdfReader, outStream);
                pdfStamper.AcroFields.GenerateAppearances = true;

                pdfStamper.AcroFields.SetField("registersubject", "testSubject");

                pdfStamper.FormFlattening = true;
                pdfStamper.FreeTextFlattening = true;
                pdfStamper.Writer.CloseStream = false;
                pdfStamper.Close();

                return outStream.ToArray();
            }
        }

0 个答案:

没有答案