我正在尝试使用itext删除PDF中可能是恶意的所有对象。我发现我必须删除以下对象:
PdfName.AA
PdfName.JS
PdfName.JAVASCRIPT
PdfName.OPENACTION
我目前正在做的是获取当前页面的PdfDictionary并删除4个对象。
int pages = reader.getNumberOfPages();
for (int i=0; i < pages; i++) {
PdfDictionary p = reader.getPageN(i);
if (p!=null) {
p.remove(PdfName.AA);
p.remove(PdfName.JS);
p.remove(PdfName.JAVASCRIPT);
p.remove(PdfName.OPENACTION);
}
}
总的来说,似乎没有用。我查看了PDF的内部结构,但在第一级找不到其中一个对象。我是否必须遍历p
(递归)返回的所有其他词典?
我试图删除PdfName.ANNOTS
以查看代码是否正常工作并且它正在运行 - 所有注释都已删除。
我希望我的问题变得清晰。有人能指出我正确的方向吗?