我遇到了一个 Web API 的问题,它接收 PDF 文档(PDF 表单)作为 base64 编码字符串,将其放入文件中,填写一些字段(使用iTextSharpPdfStamper
类)并将结果发送回为一个base64编码的字符串,它再次被制作成一个文件。
当我之后尝试使用Foxit Reader打开此文件/文档时,我仍然可以编辑这些字段,但是当我尝试使用Adobe Acrobat Reader进行相同操作时,这些字段不再可编辑。
在Foxit Reader中打开属性页并查看文档的安全属性时,它说一切都是允许的。但是,在Adobe Acrobat Reader中执行相同操作时,它表示不允许评论、填写字段和签名(这是在将其发送到 API 之前)。
不幸的是,我无法指定最终用户使用的 PDF 阅读器,所以我需要它是通用的。
我可以看到许多其他人发布了关于类似问题的帖子,但我没有在其中看到我的特定问题。
有谁知道这里发生了什么以及如何解决它?
编辑:添加代码
我正在这样做(略微简化,但相同):
PdfReader reader = new PdfReader("path to PDF form file");
stamp = new PdfStamper(reader, new FileStream("path to filled PDF form file", FileMode.Create));
AcroFields form = stamp.AcroFields;
IDictionary<string, AcroFields.Item> fs = form.Fields;
foreach (var f in fs)
{
form.SetField(f.Key, "some value");
}
stamp.Close();
编辑:添加了示例 PDF 文件
示例文件只是在互联网上找到的东西,我记得它在这里的另一篇文章中有链接。
我尝试在此 PDF 表单中填写 2 个字段(名字和姓氏)。
第一个文件是从 base64 字符串创建的表单。
d94b6076-983d-47db-b496-a0ba383deda4.pdf
第二个文件是填写2个字段后的输出。