示例#1
0
        public static bool Search(Canvas canvas, SearchArgs args)
        {
            if (canvas == null)
            {
                return(false);
            }
            var engine = canvas.Tag as CanvasEngine;

            if (engine == null)
            {
                return(false);
            }
            var core = engine.Core;

            if (core == null)
            {
                return(false);
            }

            core.SearchCaseSensitive = !args.IgnoreCase;
            var order = args.WholeDocument ? PDFLibNet.PDFSearchOrder.PDFSearchFromdBegin : PDFLibNet.PDFSearchOrder.PDFSearchFromCurrent;

            int result = 0;

            if (args.FromBegin)
            {
                PreviousSearchResult_ = null;
                result = core.FindFirst(args.Text, order, false, args.WholeWord);
            }
            else if (args.FindNext)
            {
                result = core.FindNext(args.Text);
            }
            else
            {
                result = core.FindPrevious(args.Text);
            }
            //else result = core.FindText(args.Text, core.CurrentPage, order, !args.IgnoreCase, !args.FindNext, true, args.WholeWord);


            var prev = core.CurrentPage;

            if (result > 0 && (PreviousSearchResult_ == null || !Equals(PreviousSearchResult_, core.SearchResults[0])))
            {
                core.CurrentPage      = core.SearchResults[0].Page;
                PreviousSearchResult_ = core.SearchResults[0];
            }
            CanvasPolicy.Render(canvas, false);
            if (core.CurrentPage != prev)
            {
                engine.UpdateURL();
            }

            return(result > 0);
        }
示例#2
0
 /* ----------------------------------------------------------------- */
 /// Equals (private)
 /* ----------------------------------------------------------------- */
 private static bool Equals(PDFLibNet.PDFSearchResult arg0, PDFLibNet.PDFSearchResult arg1)
 {
     return(arg0.Page == arg1.Page && arg0.Position == arg1.Position);
 }
示例#3
0
        public static bool Search(Canvas canvas, SearchArgs args)
        {
            if (canvas == null) return false;
            var engine = canvas.Tag as CanvasEngine;
            if (engine == null) return false;
            var core = engine.Core;
            if (core == null) return false;

            core.SearchCaseSensitive = !args.IgnoreCase;
            var order = args.WholeDocument ? PDFLibNet.PDFSearchOrder.PDFSearchFromdBegin : PDFLibNet.PDFSearchOrder.PDFSearchFromCurrent;

            int result = 0;
            if (args.FromBegin) {
                PreviousSearchResult_ = null;
                result = core.FindFirst(args.Text, order, false, args.WholeWord);
            }
            else if (args.FindNext) result = core.FindNext(args.Text);
            else result = core.FindPrevious(args.Text);
            //else result = core.FindText(args.Text, core.CurrentPage, order, !args.IgnoreCase, !args.FindNext, true, args.WholeWord);

            var prev = core.CurrentPage;
            if (result > 0 && (PreviousSearchResult_ == null || !Equals(PreviousSearchResult_, core.SearchResults[0]))) {
                core.CurrentPage = core.SearchResults[0].Page;
                PreviousSearchResult_ = core.SearchResults[0];
            }
            CanvasPolicy.Render(canvas, false);
            if (core.CurrentPage != prev) engine.UpdateURL();

            return result > 0;
        }