2016-04-05 126 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