【发布时间】:2019-08-17 20:25:08
【问题描述】:
我对 PDF 签名有疑问。我收到了一个 PDF 文件,它是使用 Life Cycle (Acrobat) 创建的,其中已经包含在一些 acroFields 上的两个数字签名。我必须在其他 acrofields 上放置一些数据,并且我在 C# 中使用以下代码:
PdfReader pdfReader = null;
PdfStamper stamper = null;
string filePDF = @"C:\Visual Studio Solutions\Visual Windows\cpce Certificaciones\prueba_xfa.pdf";
string outPDF = @"C:\Visual Studio Solutions\Visual Windows\cpce Certificaciones\prueba_xfa_out.pdf";
try
{
using (var inStream = new FileStream(filePDF, FileMode.Open))
{
pdfReader = new PdfReader(inStream);
}
using (var outStream = new FileStream(outPDF, FileMode.Create))
{
stamper = new PdfStamper(pdfReader, outStream, '\0', true);
var form = stamper.AcroFields;
form.SetField("FORMULARIO[0].SUBFORMULARIO[0].ConsejoSubForm[0].OBLEA[0]", "probando");
stamper.Close();
pdfReader.Close();
}
}
catch (Exception ex)
{
throw new Exception("error: " + ex.Message);
}
问题是新文件之前的两个签名被破坏了。 我不知道出了什么问题。 提前致谢
【问题讨论】:
-
你说 "created with Life Cycle" - 表单可能是 xfa 还是混合表单? Itext 仅对 xfa 表单的支持有限,正确处理已签名的表单可能超出此范围。
-
您好 mkl,我不知道它是 xfa 还是 hybrid,因为表格来自联邦税务局。我做了两项测试,其中一项使用 C# iTextSharp,另一项使用 Java 代码。在 C# 中,语句 form.SetField 打破了前两个签名,但在 Java 中,第二个签名保持完美。第一个符号被破坏,因为(我不知道为什么)当该字段具有原始形式时,一个日期字段出现为零。
-
啊,听起来很有趣。我将在本周晚些时候对此进行调查。
-
非常感谢 mkl,非常感谢您的帮助
-
话虽如此,你能分享有问题的 pdf 进行测试吗?
标签: itext