2016-04-05 164 views
0

我能夠突出顯示PDF文本,但我想知道如何刪除我剛添加的註釋。我添加下面的代碼:刪除註釋iTextSharp

PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rectangle, null, PdfAnnotation.MARKUP_HIGHLIGHT, quadPoints.ToArray()); 
    highlight.Color = BaseColor.RED; 
    stamper.AddAnnotation(highlight, page); 

如果我是在一個列表中,以保持像PdfAnnotation本身的參考,可我只是回去,並用它來刪除它?

一個典型的情況是,如果我不得不突出顯示某些內容,然後稍後執行檢查並意識到不再需要突出顯示,我可以返回並撤消它。我正在考慮列出所有我必須強調的事情,然後一旦我確定需要突出顯示該列表中的所有內容,請繼續並執行此操作,但這種方式看起來要慢兩倍,就好像我剛剛回去並解除了我發現後的一大亮點。所以如果我至少保留了PdfAnnotation的列表,我可以回到列表中的最後一個,如果我已經參考了highlight.Remove();,我可以回到列表中的最後一個。或者我必須標註註釋,然後循環所有PdfDictionary的頁面並找到相同的標籤。

+0

你是在說'一次性添加和刪除它'還是'今天添加它並刪除它'?我很困惑,因爲你談論保持一個對象聽起來像前者的引用 –

+0

嗨克里斯,我更新了這個問題,請讓我知道它是否仍然令人困惑 – peacefullearner

+1

一般來說,當爲大多數事物(除了'PdfDictionary'和其他基本集合)調用'AddXXX'方法時,它被假定爲寫入的單向路徑到PDF,基本上完成了。「撤銷」這些操作的唯一方法是關閉PDF並執行第二遍。這裏可能是一個監聽器或事件,您可以在之前執行後處理但要誠實地說,只需存儲自己的'Annotation'和頁面集合,根據需要添加/刪除並添加到'Stampe當你完成後,最後的'r'。 –

回答

0

PdfAnnotation延伸PdfDictionary這意味着您可以將自定義條目添加到該字典中。請參閱我對問題的回答:Insert PieceInfo in merged document with ITextSharp

在此答案中,我在頁面字典中添加了一個額外條目:ITXT_PageMarker。請注意,我使用二級名稱,該名稱以iText註冊的ISO前綴開頭,以避免與頁面字典中現有或將來的鍵衝突。

通過添加這個額外的鍵(在我的情況下,頁面字典;在你的情況下注釋字典),你可以搜索這個元素(在我的情況下,頁面;在你的情況下注釋),在完成PDF。

注意事項:如果您想添加註釋,然後在一次傳遞中將其刪除,則不會回答您的問題。正如Chris Haas在他的評論中提到的那樣,你的問題有點令人困惑。

+0

嗨布魯諾,我更新了這個問題。請讓我知道它是否仍然令人困惑。 – peacefullearner