C# 中的 AcroForm PDF 到普通 PDF

AcroForm PDF to normal PDF in c#

我有一个 Acroform PDF(可以编辑的 PDF),但我正在使用 API 来签署 PDF,这要求 PDF 是普通的,而不是 Acroform 的。

有什么方法可以将 AcroForm PDF 转换为普通 PDF 吗?

我尝试将其设置为只读,但即使无法编辑它仍然是 Acroform PDF。

在回答我的评论时,我假设您正在使用 iTextSharp,即使您没有指定。使用 iTextSharp,我相信您需要在完成后对表单进行展平。这是一个简单的例子:

public void GeneratePDF(string filePath, List<PDFField> modifiedFields)
        {
            var pdfReader = new PdfReader(filePath);
            var folderStructure = filePath.Split('\');
            if (folderStructure.Length == 0) return;
            var currentFileName = folderStructure.Last();
            var newFilePath = string.Format("{0}{1}", Constants.SaveFormsPath,
                currentFileName.Replace(".pdf", DateTime.Now.ToString("MMddyyhhmmss") + ".pdf"));
            var pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create));
            foreach (var field in modifiedFields.Where(f=>f.Value != null))
            {
                pdfStamper.AcroFields.SetField(field.Name, field.Value);
            }
            pdfStamper.FormFlattening = true;
            pdfStamper.Close();
        }

忽略关于文件名的部分,它归结为传递一些关于要设置的字段值的键值列表。这可能是您制作签名作品的地方,然后将压模上的 FormFlattening 属性 设置为 true。

这是另一个 SO post,他们使用类似的技术来解决稍微不同的问题,它可能会有所帮助:How to flatten already filled out PDF form using iTextSharp