C# 中的 AcroForm PDF 到普通 PDF
AcroForm PDF to normal PDF in c#
我有一个 Acroform PDF(可以编辑的 PDF),但我正在使用 API 来签署 PDF,这要求 PDF 是普通的,而不是 Acroform 的。
有什么方法可以将 AcroForm PDF 转换为普通 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();
}
忽略关于文件名的部分,它归结为传递一些关于要设置的字段值的键值列表。这可能是您制作签名作品的地方,然后将压模上的 FormFlattening 属性 设置为 true。
这是另一个 SO post,他们使用类似的技术来解决稍微不同的问题,它可能会有所帮助:How to flatten already filled out PDF form using iTextSharp
我有一个 Acroform PDF(可以编辑的 PDF),但我正在使用 API 来签署 PDF,这要求 PDF 是普通的,而不是 Acroform 的。
有什么方法可以将 AcroForm PDF 转换为普通 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();
}
忽略关于文件名的部分,它归结为传递一些关于要设置的字段值的键值列表。这可能是您制作签名作品的地方,然后将压模上的 FormFlattening 属性 设置为 true。
这是另一个 SO post,他们使用类似的技术来解决稍微不同的问题,它可能会有所帮助:How to flatten already filled out PDF form using iTextSharp