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();
}
1 回答
在回答我的评论时,我假设你正在使用iTextSharp,即使你没有指定 . 使用iTextSharp,我相信你需要在完成后展平表单 . 这是一个简单的例子:
忽略关于文件名的部分,它归结为传递关于要设置的字段值的一些键值列表 . 这可能是您签名的位置,然后将压模上的FormFlattening属性设置为true .
这是另一个SO帖子,他们使用类似的技术来解决稍微不同的问题,它可能会有所帮助:How to flatten already filled out PDF form using iTextSharp