我有一个Acroform PDF(可以编辑的PDF),但是我使用API来签署PDF,这要求PDF是正常的,而不是Acroform的。
有没有办法将AcroForm PDF转换为普通PDF?
我尝试将其设为只读,但即使无法编辑,它仍然是Acroform PDF。
答案 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