2017-12-02 121 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一進入)任何元數據項。