如何使用iText删除PDF格式的信息地图的某些值

时间:2017-12-02 16:42:47

标签: java itext

使用iText很容易获得PDF文件的标题,作者等信息:

Map<String, String> info = pdfReader.getInfo();

但是如何从该地图中删除和修改某些键/值?

例如,info.remove("Title")没有做到这一点。

1 个答案:

答案 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的条目)。