我需要使预先填充的PDF/XFA表单只读(因为在没有输入的情况下,例如文本、复选框、单选按钮等可以更改它们的值)。
对于常规的AcroForms PDF和静态XFA表单,我可以通过在PdfStamper实例上调用setFormFlattening(true)来实现这一点。对于动态XFA表单,我必须将XDP的field节点的field属性设置为readOnly。
问题是,如何检测表单是 dynamic XFA?isXfaPresent没有区分静态还是动态XFA表单,所以没有用。
发布于 2015-02-06 22:32:51
为了添加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.");
}https://stackoverflow.com/questions/13144500
复制相似问题