在c#中转换为普通PDF

本文关键字:PDF 转换 | 更新日期: 2023-09-27 18:01:30

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

是否有任何方法将AcroForm PDF转换为正常格式?

我试着把它设置为只读,但即使它不能编辑,它仍然是一个Acroform PDF。

在c#中转换为普通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();
        }

忽略关于文件名的部分,它归结为传递一些关于要设置的字段值的键值列表。这可以是你的签名部分,然后将模板上的form扁平化属性设置为true。

这里是另一篇文章,他们使用了类似的技术来解决一个稍微不同的问题,它可能会有所帮助:如何使用iTextSharp

来使已经填写好的PDF表单变平