【发布时间】:2016-03-03 21:29:46
【问题描述】:
我使用以下问题答案中的代码突出显示了 pdf 中的单词:Highlight words in a pdf using itextsharp, not displaying highlighted word in browser
现在我想知道如何使用 iTextSharp 删除那些突出显示的矩形。
private void RemovehighlightPDFAnnotation(string outputFile, string highLightFile, int pageno, string highLightedText)
{
PdfReader reader = new PdfReader(outputFile);
using (FileStream fs = new FileStream(highLightFile, FileMode.Create, FileAccess.Write, FileShare.None))
{
using (PdfStamper stamper = new PdfStamper(reader, fs))
{
PdfDictionary pageDict = reader.GetPageN(pageno);
PdfArray annots = pageDict.GetAsArray(PdfName.ANNOTS);
if (annots != null)
{
for (int i = 0; i < annots.Size; ++i)
{
PdfDictionary annotationDic = (PdfDictionary)PdfReader.GetPdfObject(annots[i]);
PdfName subType = (PdfName)annotationDic.Get(PdfName.SUBTYPE);
if (subType.Equals(PdfName.HIGHLIGHT))
{
PdfString str = annots.GetAsString(i);
if(str==highLightedText)
{
annots.Remove(i);
}
}
}
}
}
}
它删除了所有注释,但我想删除特定的注释。 假设我在第 1 页突出显示了 美国 和 专利申请公开,现在我想单独删除美国。我将传递文本美国。
我提到了这个answer。其中,要获取突出显示的文本,您需要获取存储在 Highlight 注释中的坐标(存储在 QuadPoints 数组中),并且您需要使用这些坐标来解析页面内容中在这些坐标处存在的文本。
【问题讨论】:
-
您的意思是添加高亮作为内容的一部分的代码,而不是添加高亮作为注释的代码,我想...?
-
我编辑了我的问题。请检查。
-
如果我是你,我会将私人数据添加到我创建的包含突出显示的短语的注释中。当您想删除给定短语的注释时,只需检查该私有数据即可。
-
对不起,我不知道如何获取突出显示的注释坐标?
标签: c# pdf itextsharp