1PDFDoc doc = new PDFDoc(filename);
2Int32 page_num = 0;
3String result_str = "", ambient_string = "";
4Highlights hlts = new Highlights();
5TextSearch txt_search = new TextSearch();
6Int32 mode = (Int32)(TextSearch.SearchMode.e_whole_word | TextSearch.SearchMode.e_page_stop | TextSearch.SearchMode.e_highlight);
7String pattern = "";
8
9//use regular expression to find credit card number
10mode |= (Int32)(TextSearch.SearchMode.e_reg_expression | TextSearch.SearchMode.e_highlight);
11txt_search.SetMode(mode);
12String pattern = "\\d{4}-\\d{4}-\\d{4}-\\d{4}"; //or "(\\d{4}-){3}\\d{4}"
13txt_search.SetPattern(pattern);
14
15//call Begin() method to initialize the text search.
16txt_search.Begin( doc, pattern, mode, -1, -1 );
17TextSearch.ResultCode code = txt_search.Run(ref page_num, ref result_str, ref ambient_string, hlts );
18
19if ( code == TextSearch.ResultCode.e_found )
20{
21 //add a link annotation based on the location of the found instance
22 hlts.Begin(doc);
23 while (hlts.HasNext())
24 {
25 Page cur_page = doc.GetPage(hlts.GetCurrentPageNumber());
26 double[] quads = hlts.GetCurrentQuads();
27 int quad_count = quads.Length / 8;
28 for (int i = 0; i < quad_count; ++i)
29 {
30 //assume each quad is an axis-aligned rectangle
31 int offset = 8 * i;
32 double x1 = Math.Min(Math.Min(Math.Min(quads[offset + 0], quads[offset + 2]), quads[offset + 4]), quads[offset + 6]);
33 double x2 = Math.Max(Math.Max(Math.Max(quads[offset + 0], quads[offset + 2]), quads[offset + 4]), quads[offset + 6]);
34 double y1 = Math.Min(Math.Min(Math.Min(quads[offset + 1], quads[offset + 3]), quads[offset + 5]), quads[offset + 7]);
35 double y2 = Math.Max(Math.Max(Math.Max(quads[offset + 1], quads[offset + 3]), quads[offset + 5]), quads[offset + 7]);
36
37 Annots.Link hyper_link = Annots.Link.Create(doc, new Rect(x1, y1, x2, y2), Action.CreateURI(doc, "http://www.apryse.com"));
38 hyper_link.RefreshAppearance();
39 cur_page.AnnotPushBack(hyper_link);
40 }
41 hlts.Next();
42 }
43}