有没有办法删除iText 7中的所有XMP元数据?

时间:2018-06-08 20:54:14

标签: itext7

我试图删除iText 7中的所有XMP MetaData。它似乎应该删除,但当我写回来时,所有旧数据仍然存在。我试过这个:

var pdfDoc = new PdfDocument(new PdfReader("document.pdf"), new PdfWriter("document-new.pdf"));
pdfDoc.SetXmpMetadata(XMPMetaFactory.Create());
pdfDoc.Close();

我们只是想确保删除所有可能的元数据,因为这些是针对论文的,我们不希望审稿人知道他们在某处隐藏某些元数据的论文。

由于

2 个答案:

答案 0 :(得分:1)

我对此的回答是离开电脑。我不确定这是一个缓存问题还是什么,但是我重新启动了周末的计算机,用相同的代码打开了Visual Studio,它开始工作了。是的周末!

答案 1 :(得分:0)

首先,我想提一下,有很多方法可以隐藏PDF文件中的信息 - 而且您不能保证通过删除元数据来删除所有跟踪。但是,这确实是一项必要的预防措施。

未使用您的代码删除元数据的原因是,有关作者,标题和类似内容的信息可以存储在元数据中以及所谓的Info dictionary中。此外,信息词典和元数据中的信息应保持同步 - 这就是iText为您处理的内容。

因此,为确保删除作者,标题等,请从信息词典中删除该信息(我在这里使用N/A,如果您愿意,可以使用空字符串):

pdfDocument.getDocumentInfo().setAuthor("N/A");
pdfDocument.getDocumentInfo().setCreator("N/A");
pdfDocument.getDocumentInfo().setKeywords("N/A");
pdfDocument.getDocumentInfo().setSubject("N/A");
pdfDocument.getDocumentInfo().setTitle("N/A");
pdfDocument.setXmpMetadata(XMPMetaFactory.create());