AcroForm PDF到c#中的普通PDF

时间:2015-07-08 12:41:45

标签: c# pdf itextsharp

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

有没有办法将AcroForm PDF转换为普通PDF?

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

1 个答案:

答案 0 :(得分:2)

在回答我的评论时,我假设你正在使用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帖子,他们使用类似的技术来解决稍微不同的问题,它可能有所帮助:How to flatten already filled out PDF form using iTextSharp