ItextSharp以pdf格式查找文本并突出显示它

时间:2017-09-19 14:08:25

标签: c# itext

我正在研究PDF功能,我希望用PDF搜索文本并突出显示PDF中找到的文本。为此,我正在使用iTextsharp。

我还没有得到任何解决方案,请为我提供解决方案。 我写了以下代码;

   public ActionResult Index1()
    { 
        string outputFile = @"D:\Test.pdf";

        using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            using (Document doc = new Document(PageSize.LETTER))
            {
                using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
                {
                    doc.Open();
                    doc.Add(new Paragraph("This is a test and sample pdf for test and wait for it"));  
                    doc.Close();
                }
            }
        }

        List<int> pages = new List<int>();
        PdfReader pdfReader = new PdfReader(outputFile);
        for (int page = 1; page <= pdfReader.NumberOfPages; page++)
        {
            ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();

            string currentPageText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
            if (currentPageText.Contains("test"))
            {
                pages.Add(page);
            }
        }
        pdfReader.Close();

        //Create a new file from our test file with highlighting
        string highLightFile = @"D:\Test1.pdf"; 

        //Bind a reader and stamper to our test PDF
        PdfReader reader = new PdfReader(outputFile);

        using (FileStream fs = new FileStream(highLightFile, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            using (PdfStamper stamper = new PdfStamper(reader, fs))
            {

                iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(60.6755f, 749.172f, 94.0195f, 735.3f); 
                float[] quad = { rect.Left, rect.Bottom, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Right, rect.Top };

                PdfAnnotation highlight = PdfAnnotation.CreateMarkup(stamper.Writer, rect, null, PdfAnnotation.MARKUP_HIGHLIGHT, quad);

                //Set the color
                highlight.Color = BaseColor.YELLOW;

                //Add the annotation
                stamper.AddAnnotation(highlight, 1);
            }
        }
        return View();
    }

以上代码创建一个PDF(test1.pdf) 在另一个PDF中,它突出显示了一些带有硬编码坐标的文本,我需要找到PDF中某些文本的坐标。

但我找不到我正在寻找的文字的坐标。

1 个答案:

答案 0 :(得分:1)

在iText7中,我们实现了此功能。 它可以在课程RegexBasedLocationExtractionStrategy中找到。

我建议你看看它是如何完成的,因为这个功能没有被移植到iText5。