c# - iTextSharp 5.5.13:将签名字段添加到现有 PDF
问题描述
我正在尝试向现有 PDF 添加签名字段,但出现两个错误,这是我的代码
private static bool CreateForm(string inputPDF, float x, float y, float w, float h, float angle, bool allPages)
{
try
{
PdfReader reader = new PdfReader(inputPDF);
using (FileStream os = new FileStream(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + Path.DirectorySeparatorChar + "Temp" + Path.DirectorySeparatorChar + "t0.pdf", FileMode.Create, FileAccess.Write))
{
PdfStamper st0 = PdfStamper.CreateSignature(reader, os, '\0', Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + Path.DirectorySeparatorChar + "Temp" + Path.DirectorySeparatorChar + "t1.pdf", true);
PdfFormField field = PdfFormField.CreateSignature(st0.Writer);
field.FieldName = "FIRMA";
field.SetWidget(new Rectangle(x, y, x + w, y + h), PdfAnnotation.HIGHLIGHT_OUTLINE);
field.SetFieldFlags(PdfAnnotation.FLAGS_PRINT);
field.Rotate = Convert.ToInt32(Math.Round(angle));
if (allPages)
for (int i = 1; i <= reader.NumberOfPages; i++)
st0.AddAnnotation(field, i);
else
st0.AddAnnotation(field, reader.NumberOfPages);
st0.FormFlattening = true;
st0.Writer.CloseStream = true;
//st0.Close();
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
return true;
}
现在如果我关闭压模st0.Close()
,我会收到“必须关闭签名”的错误,否则如果我不关闭它,结果文件是空的(0 B);也试过没有st0.FormFlattening = true;
和没有st0.Writer.CloseStream = true;
,我没有发现任何组合工作。
建议?
解决方案
推荐阅读
- c# - 如何在 .NET C# 中以一种方式获取 SOAP Web 服务的请求状态?
- git - git push origin 是否总是合并到 master 分支?
- python - Keras Accuracy 和 Loss 在很长一段时间内没有变化
- html - 使用 nginx 反向代理的 iframe
- python - 太多值无法解包(预期为 2) - Django SQL 异常
- python - 将 Django 视图转换为休息服务
- python-3.x - 在多列上合并多个 Pandas 数据框
- r - R中具有多个条件的累积和?
- ssl - Google 域 CNAME 记录
- angularjs - AngualrJs:我需要在我的控制器中使用 $scope 吗?