2017-12-02 140 views
1
删除PDF信息地图的特定值

很容易使用iText获取这些信息的标题,作者一个PDF文件等:如何利用iText

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

但我怎么删除和修改某些键/值的地图?

例如,info.remove("Title")没有办法。

回答

0

我假设您在PdfStamper实例上使用setMoreInfo()方法。此方法循环使用您提供的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>()并为"Title"添加一个null条目;这将有同样的效果:

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一进入)任何元数据项。