我需要将预先填充的 PDF/XFA 表单设置为只读(因为没有输入,例如文本、复选框、单选按钮等可以更改其值)。
对于常规 AcroForms PDF 和静态 XFA 表单,我可以通过调用来完成此操作setFormFlattening(true) http://www.docjar.org/docs/api/com/lowagie/text/pdf/PdfStamper.html#setFormFlattening(boolean)在 PdfStamper 实例上。对于动态 XFA 表单,我必须设置一个access
XDP 的属性field
节点为readOnly
.
问题是,如何检测表单是否dynamic XFA? isXfaPresent http://www.docjar.org/docs/api/com/lowagie/text/pdf/XfaForm.html#isXfaPresent不区分静态或动态 XFA 表单,因此没有用。
添加到 Bruno 的答案并提供 C# 示例代码:
PdfReader reader = new PdfReader(filePath);
XfaForm xfa = new XfaForm(reader);
//Check if PDF file contains Dynamic XFA data
if (xfa != null && xfa.XfaPresent && xfa.Reader.AcroFields.Fields.Keys.Count == 0)
{
MessageBox.Show("This PDF contains Dynamic XFA data.");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)