首页 文章

AcroForm PDF到c#中的普通PDF

提问于
浏览
0

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

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

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

1 回答

  • 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

相关问题