Do you own a Debenu Quick PDF Library version 7, 8, 9, 10, 11, 12, 13 or iSEDQuickPDF license? Upgrade to Debenu Quick PDF Library 14 today!

Debenu Quick PDF Library - PDF SDK Community Forum Homepage
Forum Home Forum Home > For Users of the Library > Sample Code
  New Posts New Posts RSS Feed - Search text and get the bound boxes
  FAQ FAQ  Forum Search   Register Register  Login Login

Search text and get the bound boxes

 Post Reply Post Reply
Author
Message
Ingo View Drop Down
Moderator Group
Moderator Group
Avatar

Joined: 29 Oct 05
Status: Offline
Points: 3103
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ingo Quote  Post ReplyReply Direct Link To This Post Topic: Search text and get the bound boxes
    Posted: 27 Mar 16 at 1:41PM
from our user Pinozzy:
Thanks for sharing!

I'm using the Viewer SDK (with c#) for search some text in a document. 
I need to localize that text and get the co-ordinates of the single results. 

My approach is now this: 

SearchPDFText("my string");

what I obtain is the number of the occurrences. 
Now I need the bound rectangles of theese occurrences. 

How can I do that?

. . .

This is how I solved my problem. 
This method returns results from a search by Regex.

Bye!

----

public struct FindResult
    {
      public string Text { get; set; }
      public RectangleF Rectangle { get; set; }
      public int Page { get; set; }
    }

    public override List<FindResult> SearchPattern(int pageIndex, string pattern)
    {
      var retVal = new List<FindResult>();
      var dpl = Document.DPL;
      dpl.SetTextExtractionWordGap(1);
      dpl.SetTextExtractionOptions(3, 0);
      var regex = new Regex(pattern);
      for (var i = 0; i < Pages; i++)
      {
        if(pageIndex > 0 && (pageIndex - 1) != i) continue; 
        var id = dpl.ExtractPageTextBlocks(4);
        dpl.SelectPage(i);
        for (var f = 1; f <= dpl.GetTextBlockCount(id); f++)
        {
          var text = dpl.GetTextBlockText(id, f);
          var match = regex.Match(text);
          if (!match.Success) continue;
          var res = new FindResult
          {
            Rectangle = new RectangleF(
              (float)dpl.GetTextBlockBound(id, f, 7), 
              (float)dpl.GetTextBlockBound(id, f, 8),
              (float)dpl.GetTextBlockBound(id, f, 5) - (float)dpl.GetTextBlockBound(id, f, 7),
              (float)dpl.GetTextBlockBound(id, f, 6) - (float)dpl.GetTextBlockBound(id, f, 4)
            ),
            Page = i+1, Text = text
          };
          retVal.Add(res);
        }
        dpl.ReleaseTextBlocks(id);
      }
      return retVal;
    }



Edited by Ingo - 27 Mar 16 at 1:44PM
Cheers,
Ingo

Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 11.01
Copyright ©2001-2014 Web Wiz Ltd.

Copyright © 2017 Debenu. Debenu Quick PDF Library is a PDF SDK. All rights reserved. AboutContactBlogSupportOnline Store