如何使用Java删除PDF上的元数据?
IText会做什么或任何其他框架都有能力做到这一点? 我没有找到任何使用IText删除元数据的示例或类。如果有人在此之前做过这个或有任何想法吗?
请分享您的观点。
提前致谢。
答案 0 :(得分:5)
首先,您需要区分,因为PDF中有两种类型的元数据:
您首先删除的内容如下:
PdfReader reader = stamper.getReader();
reader.getCatalog().remove(PdfName.METADATA);
reader.removeUnusedObjects();
你删除的第二个像SANN3一样提到:
HashMap<String, String> info = super.reader.getInfo();
info.put("Title", null);
info.put("Author", null);
info.put("Subject", null);
info.put("Keywords", null);
info.put("Creator", null);
info.put("Producer", null;
info.put("CreationDate", null);
info.put("ModDate", null);
info.put("Trapped", null);
stamper.setMoreInfo(info);
如果您使用文本编辑器搜索PDF,则无法找到/ INFO字典或XMP元数据...
答案 1 :(得分:3)
试试此代码
PdfReader readInputPDF = new PdfReader("sample.pdf");
HashMap<String, String> hMap = readInputPDF.getInfo();
PdfStamper stamper = new PdfStamper(readInputPDF, new FileOutputStream("sample1.pdf"));
hMap.put("Author", null);
stamper.setMoreInfo(hMap);
stamper.close();
将元数据属性添加到要从PDF中删除的地图。
答案 2 :(得分:1)
为使用 PdfBox 2.x 的用户更新
File pdf = new File("student-scorecard.pdf";
PDDocument document = PDDocument.load(pdf);
PDDocumentInformation information = document.getDocumentInformation();
if(information != null) {
document.setDocumentInformation(new PDDocumentInformation());
document.save("student-scorecard-anonymized.pdf");
}
document.getDocumentCatalog().setMetadata(null); // Tilman Hausherr
document.close();