使用iText
可以轻松获取PDF文件的标题、作者等信息:
Map<String, String> info = pdfReader.getInfo();
但是如何从该映射中删除和修改某些键/值?
例如,info.remove("Title")
并不能解决问题。
最佳答案
我假设您正在使用 setMoreInfo()
PdfStamper
上的方法实例。此方法循环遍历 Map
的条目您提供,并根据 Map
中存储的 key 更改现有元数据。如果您删除 key ,则不会发生任何事情(这就是您所注意到的)。
删除条目的技巧是将该条目设置为 null
:
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Map<String, String> info = reader.getInfo();
info.put("Title", null);
stamper.setMoreInfo(info);
stamper.close();
reader.close();
您甚至不需要从 PdfReader
检索原始元数据;你可以创建一个 new HashMap<String, String>()
并添加 null
条目 "Title"
;这将具有相同的效果:
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Map<String, String> info = new HashMap<String, String>();
info.put("Title", null);
stamper.setMoreInfo(info);
stamper.close();
reader.close();
正如您将看到的,使用空 Map
首先不会删除任何元数据条目(当然,除非您添加值为 null
的条目)。
关于java - 如何使用 iText 删除 PDF 中信息 map 的某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610132/