使用iText
很容易获得PDF文件的标题,作者等信息:
Map<String, String> info = pdfReader.getInfo();
但是如何从该地图中删除和修改某些键/值?
例如,info.remove("Title")
没有做到这一点。
答案 0 :(得分:0)
我假设您在setMoreInfo()
实例上使用PdfStamper
方法。此方法循环遍历您提供的Map
条目,并根据Map
中存储的密钥更改现有元数据。如果你删除一个键,没有任何反应(这是你注意到的)。
删除条目的技巧是将该条目设置为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
的条目)。