在c#中转换为普通PDF
本文关键字:PDF 转换 | 更新日期: 2023-09-27 18:01:30
我有一个Acroform PDF(可以编辑的PDF),但我使用API来签署PDF,这要求PDF是正常的,而不是Acroform的。
是否有任何方法将AcroForm 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();
}
忽略关于文件名的部分,它归结为传递一些关于要设置的字段值的键值列表。这可以是你的签名部分,然后将模板上的form扁平化属性设置为true。
这里是另一篇文章,他们使用了类似的技术来解决一个稍微不同的问题,它可能会有所帮助:如何使用iTextSharp