Browse Source

Merge branch 'compdfkit_demo_win_dev' of http://git.kdan.cc:8865/Others/kmpdfkit_demo into compdfkit_demo_win_dev

liyijie 8 months ago
parent
commit
0c5ae0552b

+ 4 - 4
Demo/Examples/ComPDFKit.Tool/CPDFToolManager.cs

@@ -363,7 +363,7 @@ namespace ComPDFKit.Tool
         public List<CPDFEditArea> GetSelectedEditAreaListObject(ref List<int> pageIndexs)
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.MultiSelectedRectViewTag));
             if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
             {
                 foreach (SelectedRect selectedRect in multiSelectedRect.Children)
@@ -1818,7 +1818,7 @@ namespace ComPDFKit.Tool
                 if (createContentEditType != CPDFEditType.EditImage)
                 {
                     Cursor cursor = Cursors.Arrow;
-                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.MultiSelectedRectViewTag));
 
                     if (viewerTool.GetLastSelectedRect() != null)
                     {
@@ -1859,7 +1859,7 @@ namespace ComPDFKit.Tool
                 else
                 {
                     Cursor cursor = Cursors.Arrow;
-                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.MultiSelectedRectViewTag));
 
                     if (viewerTool.GetLastSelectedRect() != null)
                     {
@@ -2171,7 +2171,7 @@ namespace ComPDFKit.Tool
                         else
                         {
                             //If it is multiple selection, do not create a new input box
-                            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.multiSelectedRectViewTag));
+                            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(viewerTool.PDFViewer.GetViewForTag(viewerTool.MultiSelectedRectViewTag));
                             if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
                             {
                                 return;

+ 3 - 4
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.Command.cs

@@ -253,7 +253,7 @@ namespace ComPDFKit.Tool
                             e.CanExecute = true;
                         }
                         //Add multi status
-                        MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+                        MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
                         if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
                         {
                             e.CanExecute = true;
@@ -474,7 +474,7 @@ namespace ComPDFKit.Tool
                 else
                 { 
                     //Add multi status
-                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+                    MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
                     if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
                     {
                         foreach (SelectedRect selectedRect in multiSelectedRect.Children)
@@ -592,7 +592,7 @@ namespace ComPDFKit.Tool
             else
             {
                 //Add multi status
-                MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+                MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
                 if (multiSelectedRect != null && multiSelectedRect.Children.Count > 0)
                 {
                     foreach (SelectedRect selectedRect in multiSelectedRect.Children)
@@ -931,7 +931,6 @@ namespace ComPDFKit.Tool
 
         #endregion
 
-
         #region Annot
 
         private bool CheckCacheHitTestAnnot(string cmdName = "")

+ 19 - 23
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.MultiSelectedRect.cs

@@ -1,15 +1,10 @@
 using ComPDFKit.Tool.DrawTool;
 using ComPDFKit.Tool.Help;
 using ComPDFKit.Viewer.Layer;
-using ComPDFKitViewer.Layer;
 using System;
 using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Input;
-using System.Windows.Media;
 
 namespace ComPDFKit.Tool
 {
@@ -36,11 +31,15 @@ namespace ComPDFKit.Tool
 
     public partial class CPDFViewerTool
     {
-        public int multiSelectedRectViewTag = -1;
-        List<int> editAreaMultiIndex = new List<int>();
-        int multiPage = -1;
         public event EventHandler<MultiSelectedData> MultiDataChanging;
         public event EventHandler<MultiSelectedData> MultiDataChanged;
+        public int MultiSelectedRectViewTag { get; set; } = -1;
+
+        private List<int> editAreaMultiIndex = new List<int>();
+        private int multiPage = -1;
+        private bool isOpen = false;
+        private Key multiKey = Key.LeftCtrl;
+
         private void InsertMultiSelectedRectView()
         {
             int selectedRectViewIndex = PDFViewer.GetMaxViewIndex();
@@ -51,14 +50,14 @@ namespace ComPDFKit.Tool
             multiSelectedRect.DataChanged += MultiSelectedRect_DataChanged;
             multiSelectedRect.DataChanging += MultiSelectedRect_DataChanging;
             PDFViewer.InsertView(selectedRectViewIndex, customizeLayer);
-            multiSelectedRectViewTag = customizeLayer.GetResTag();
+            MultiSelectedRectViewTag = customizeLayer.GetResTag();
             //multiSelectedRect.Children.Add(multiSelectedRect);
         }
 
         private void MultiSelectedRect_DataChanging(object sender, Point e)
         {
             MultiSelectedData multiSelectedAnnotData = new MultiSelectedData();
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (isOpen && multiSelectedRect != null)
             {
                 multiSelectedAnnotData.ZoomX = multiSelectedRect.GetZoomX();
@@ -75,7 +74,7 @@ namespace ComPDFKit.Tool
         private void MultiSelectedRect_DataChanged(object sender, Point e)
         {
             MultiSelectedData multiSelectedAnnotData = new MultiSelectedData();
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (isOpen && multiSelectedRect != null)
             {
                 multiSelectedAnnotData.ZoomX = multiSelectedRect.GetZoomX();
@@ -89,10 +88,6 @@ namespace ComPDFKit.Tool
             }
         }
 
-        bool isOpen = false;
-
-        Key multiKey = Key.LeftCtrl;
-
         /// <summary>
         /// Set multiple selection shortcut keys
         /// </summary>
@@ -101,14 +96,15 @@ namespace ComPDFKit.Tool
         {
             multiKey = multikey;
         }
-        public void OpenSelectedMulti(bool open)
+
+        private void OpenSelectedMulti(bool open)
         {
             isOpen = open;
         }
 
         public bool HitTestMultiSelectedRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (isOpen && multiSelectedRect != null)
             {
                 if (multiSelectedRect.GetHitControlIndex(Mouse.GetPosition(this)) != PointControlType.None)
@@ -121,7 +117,7 @@ namespace ComPDFKit.Tool
 
         public void SelectedMultiRect(Rect selectedRects, Rect MaxRect, SelectedType type)
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             bool open = isOpen;
             if (!Keyboard.IsKeyDown(multiKey))
             {
@@ -222,7 +218,7 @@ namespace ComPDFKit.Tool
 
         public void CleanSelectedMultiRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (multiSelectedRect != null)
             {
                 multiSelectedRect.Children.Clear();
@@ -235,7 +231,7 @@ namespace ComPDFKit.Tool
 
         public void DrawStartSelectedMultiRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
 
             if (multiSelectedRect != null)
             {
@@ -247,7 +243,7 @@ namespace ComPDFKit.Tool
 
         public void DrawMoveSelectedMultiRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
 
             if (multiSelectedRect != null)
             {
@@ -258,7 +254,7 @@ namespace ComPDFKit.Tool
 
         public void DrawEndSelectedMultiRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
 
             if (multiSelectedRect != null)
             {
@@ -269,7 +265,7 @@ namespace ComPDFKit.Tool
 
         public void ReDrawSelectedMultiRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
 
             if (multiSelectedRect != null)
             {

+ 11 - 14
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.TextEdit.cs

@@ -1,5 +1,4 @@
 using ComPDFKit.Import;
-using ComPDFKit.PDFAnnotation;
 using ComPDFKit.PDFDocument;
 using ComPDFKit.PDFPage;
 using ComPDFKit.PDFPage.Edit;
@@ -19,9 +18,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Input;
-using System.Windows.Markup;
 using System.Windows.Media;
-using static ComPDFKit.Tool.Help.ImportWin32;
 
 namespace ComPDFKit.Tool
 {
@@ -717,7 +714,7 @@ namespace ComPDFKit.Tool
 
         public MultiSelectedRect GetMultiSelectedRect()
         {
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             return multiSelectedRect;
         }
 
@@ -2060,7 +2057,7 @@ namespace ComPDFKit.Tool
             customizeLayer.Children.Add(caretVisual);
 
             currentZoom = currentRenderFrame.ZoomFactor;
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             foreach (RenderData item in currentRenderFrame.GetRenderDatas())
             {
                 if (item.PageIndex == FrameSelectPageIndex)
@@ -2145,7 +2142,7 @@ namespace ComPDFKit.Tool
         public void SetPDFEditAlignment(AlignModes align)
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (multiSelectedRect == null || multiSelectedRect.Children.Count <= 1 || align == AlignModes.AlignNone)
             {
                 return;
@@ -2215,7 +2212,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditAlignLeft()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2260,7 +2257,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditAlignVerticalCenter()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2317,7 +2314,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditAlignRight()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2376,7 +2373,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditAlignTop()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2419,7 +2416,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditAlignHorizonCenter()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2460,7 +2457,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditAlignBottom()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2503,7 +2500,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditDistributeHorizontal()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;
@@ -2550,7 +2547,7 @@ namespace ComPDFKit.Tool
         private void SetPDFEditDistributeVertical()
         {
             List<CPDFEditArea> editAreaObjectlist = new List<CPDFEditArea>();
-            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(multiSelectedRectViewTag));
+            MultiSelectedRect MultiSelectEditList = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
             if (MultiSelectEditList == null || MultiSelectEditList.Children.Count <= 1)
             {
                 return;

+ 70 - 81
Demo/Examples/ComPDFKit.Tool/PDFTextSearch.cs

@@ -5,11 +5,8 @@ using ComPDFKit.PDFPage;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
-using System.Linq;
-using System.Text;
 using System.Text.RegularExpressions;
 using System.Threading;
-using System.Threading.Tasks;
 using System.Windows.Media;
 using System.Windows;
 
@@ -150,104 +147,96 @@ namespace ComPDFKit.Tool
             searchResult.StartPage = startPage;
             searchResult.EndPage = endPage;
             double searchPercent = 100;
-            try
-            {
 
-                mSearchDocument = CPDFDocument.InitWithFilePath(TextSearchDocument.FilePath);
-                if (password != null && password != string.Empty)
-                {
-                    mSearchDocument.UnlockWithPassword(password);
-                }
-                password = string.Empty;
-            }
-            catch (Exception ex)
+            mSearchDocument = CPDFDocument.InitWithFilePath(TextSearchDocument.FilePath);
+            if (mSearchDocument.IsLocked && !string.IsNullOrEmpty(password))
             {
-
+                mSearchDocument.UnlockWithPassword(password);
             }
-            if (mSearchDocument != null)
+
+            if (mSearchDocument != null && !mSearchDocument.IsLocked)
             {
-                try
+                int pageMaxCount = 0;
+                int recordCount = 0;
+                searchPercent = 0;
+                for (int i = startPage; i <= endPage; i++)
                 {
-                    int pageMaxCount = 0;
-                    int recordCount = 0;
-                    searchPercent = 0;
-                    for (int i = startPage; i <= endPage; i++)
+                    CPDFTextSearcher mPDFTextSearcher = new CPDFTextSearcher();
+                    CPDFPage pageCore = mSearchDocument.PageAtIndex(i);
+                    if(pageCore == null)
                     {
-                        CPDFTextSearcher mPDFTextSearcher = new CPDFTextSearcher();
-                        CPDFPage pageCore = mSearchDocument.PageAtIndex(i);
-                        CPDFTextPage textPage = pageCore.GetTextPage();
-                        int startIndex = 0;
+                        continue;
+                    }   
 
-                        List<TextSearchItem> textSearchItems = new List<TextSearchItem>();
-                        if (mPDFTextSearcher.FindStart(textPage, searchKeywords, searchOption, startIndex))
+                    CPDFTextPage textPage = pageCore.GetTextPage();
+                    int startIndex = 0;
+                    List<TextSearchItem> textSearchItems = new List<TextSearchItem>();
+                    if (mPDFTextSearcher.FindStart(textPage, searchKeywords, searchOption, startIndex))
+                    {
+                        CRect textRect = new CRect();
+                        string textContent = "";
+                        while (mPDFTextSearcher.FindNext(pageCore, textPage, ref textRect, ref textContent, ref startIndex))
                         {
-                            CRect textRect = new CRect();
-                            string textContent = "";
-                            while (mPDFTextSearcher.FindNext(pageCore, textPage, ref textRect, ref textContent, ref startIndex))
+                            if (textContent == "")
                             {
-                                if (textContent == "")
-                                {
-                                    textContent = searchKeywords;
-                                }
-                                textSearchItems.Add(new TextSearchItem()
-                                {
-                                    PageIndex = i,
-                                    TextRect = new Rect(textRect.left, textRect.top, textRect.width(), textRect.height()),
-                                    TextContent = textContent,
-                                    PageRotate = pageCore.Rotation
-                                });
-                                var matchResult = Regex.Matches(textContent, searchKeywords, RegexOptions.IgnoreCase);
-                                if (matchResult != null)
-                                {
-                                    recordCount += matchResult.Count;
-                                }
+                                textContent = searchKeywords;
+                            }
+
+                            textSearchItems.Add(new TextSearchItem()
+                            {
+                                PageIndex = i,
+                                TextRect = new Rect(textRect.left, textRect.top, textRect.width(), textRect.height()),
+                                TextContent = textContent,
+                                PageRotate = pageCore.Rotation
+                            });
+
+                            var matchResult = Regex.Matches(textContent, searchKeywords, RegexOptions.IgnoreCase);
+                            if (matchResult != null)
+                            {
+                                recordCount += matchResult.Count;
                             }
-                        }
-                        mPDFTextSearcher.FindClose();
-                        if (textSearchItems.Count > 0)
-                        {
-                            searchResult.Items.Add(i, textSearchItems);
-                        }
-                        pageMaxCount = Math.Max(pageMaxCount, textSearchItems.Count);
-                        searchResult.TotalCount = recordCount;
-                        searchResult.PageMaxCount = pageMaxCount;
-                        if (SearchPercentHandler != null)
-                        {
-                            searchPercent = (int)((i + 1 - startPage) * 100 / (endPage + 1 - startPage));
-                            searchResult.Percent = searchPercent;
-                            searchResult.CurrentPage = i;
-                            SearchPercentHandler.Invoke(this, searchResult);
-                        }
-                        mSearchDocument.ReleasePages(i);
-                        if (isCancel)
-                        {
-                            break;
                         }
                     }
-                    searchPercent = 100;
-                }
-                catch (Exception ex)
-                {
 
+                    mPDFTextSearcher.FindClose();
+                    if (textSearchItems.Count > 0)
+                    {
+                        searchResult.Items.Add(i, textSearchItems);
+                    }
+
+                    pageMaxCount = Math.Max(pageMaxCount, textSearchItems.Count);
+                    searchResult.TotalCount = recordCount;
+                    searchResult.PageMaxCount = pageMaxCount;
+                    if (SearchPercentHandler != null)
+                    {
+                        searchPercent = (int)((i + 1 - startPage) * 100 / (endPage + 1 - startPage));
+                        searchResult.Percent = searchPercent;
+                        searchResult.CurrentPage = i;
+                        SearchPercentHandler.Invoke(this, searchResult);
+                    }
+
+                    mSearchDocument.ReleasePages(i);
+                    if (isCancel)
+                    {
+                        break;
+                    }
                 }
+
+                searchPercent = 100;
                 mSearchDocument.Release();
             }
-            try
+
+            if (SearchCompletedHandler != null && !isCancel)
             {
-                if (SearchCompletedHandler != null && !isCancel)
-                {
-                    searchResult.Percent = searchPercent;
-                    SearchCompletedHandler.Invoke(this, searchResult);
-                }
-                if (SearchCancelHandler != null && isCancel)
-                {
-                    SearchCancelHandler.Invoke(this, searchResult);
-                }
+                searchResult.Percent = searchPercent;
+                SearchCompletedHandler.Invoke(this, searchResult);
             }
-            catch (Exception ex)
-            {
 
+            if (SearchCancelHandler != null && isCancel)
+            {
+                SearchCancelHandler.Invoke(this, searchResult);
             }
+
             CanDoSearch = true;
             isCancel = false;
         }

+ 0 - 2
Demo/Examples/Compdfkit.Controls/Asset/Styles/ListBoxItemStyle.xaml

@@ -20,8 +20,6 @@
     <Style x:Key="ThumbnailListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
         <Setter Property="SnapsToDevicePixels" Value="True"/>
         <Setter Property="Padding" Value="4,1"/>
-        <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
-        <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
         <Setter Property="Background" Value="Transparent"/>
         <Setter Property="BorderBrush" Value="Transparent"/>
         <Setter Property="BorderThickness" Value="1"/>

+ 1 - 1
Demo/Examples/Compdfkit.Controls/PDFView/PDFSearch/PDFSearchControl/CPDFSearchControl.xaml.cs

@@ -300,7 +300,7 @@ namespace ComPDFKit.Controls.PDFControl
                 
                 keyWord = e;
                 textSearch.TextSearchDocument = pdfView.GetDocument();
-                textSearch.SearchText(e, C_Search_Options.Search_Case_Insensitive);
+                textSearch.SearchText(e, C_Search_Options.Search_Case_Insensitive, ViewControl.Password);
             }
             else if (ReplaceTog.IsChecked == true)
             {

+ 2 - 0
Demo/Examples/Compdfkit.Controls/PDFView/PDFViewControl/PDFViewControl.xaml.cs

@@ -31,6 +31,8 @@ namespace ComPDFKit.Controls.PDFControl
         private CPDFViewerTool viewerTool;
         private CPDFToolManager toolManager;
 
+        public string Password { get; set; } = string.Empty;
+
         public CPDFViewerTool PDFViewTool { get; private set; }
         public CPDFToolManager PDFToolManager { get; private set; }
 

+ 14 - 2
Demo/Examples/PDFViewer/MainPage.xaml.cs

@@ -14,14 +14,12 @@ using Microsoft.Win32;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
-using System.IO;
 using System.Runtime.CompilerServices;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Controls.Primitives;
 using System.Windows.Input;
 using ComPDFKit.Controls.PDFControlUI;
-using static ComPDFKit.Tool.CPDFToolManager;
 
 namespace PDFViewer
 {
@@ -954,6 +952,20 @@ namespace PDFViewer
                 }
             }
         }
+
+        public void CloseFile()
+        {
+            if (viewControl != null && viewControl.PDFViewTool != null)
+            {
+                CPDFViewer pdfviewer = viewControl.PDFViewTool.GetCPDFViewer();
+                CPDFDocument pdfDoc = pdfviewer?.GetDocument();
+                if(pdfDoc !=null)
+                {
+                    pdfDoc.Release();
+                }    
+            }
+        }
+
         #endregion
 
         #region Command Binding

+ 11 - 18
Demo/Examples/PDFViewer/MainWindow.xaml.cs

@@ -1,21 +1,10 @@
-using ComPDFKit.Controls.PDFControl;
-
-using System;
-using System.Collections.Generic;
+using System;
 using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
 using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
 using System.IO;
 using System.ComponentModel;
-using System.Resources;
 using System.Runtime.CompilerServices;
 using Dragablz;
 using ComPDFKit.Controls.Helper;
@@ -24,8 +13,7 @@ using ComPDFKit.PDFDocument;
 using ComPDFKit.Controls.Data;
 using ComPDFKit.Controls.Common;
 using System.Reflection;
-using ComPDFKit.NativeMethod;
-using System.Threading;
+using ComPDFKit.Controls.PDFControl;
 
 namespace PDFViewer
 {
@@ -37,6 +25,8 @@ namespace PDFViewer
         #region Property
         private PDFViewControl passwordViewer;
         private string[] oldAndNewFilePath;
+        public event PropertyChangedEventHandler PropertyChanged;
+
         public string AppInfo
         {
             get { return Assembly.GetExecutingAssembly().GetName().Name + " " + string.Join(".", Assembly.GetExecutingAssembly().GetName().Version.ToString().Split('.').Take(3)); }
@@ -308,7 +298,7 @@ namespace PDFViewer
                     tabItem.IsSelected = true;
                     tabItem.FileName = Path.GetFileName(filePath);
                     tabItem.Tag = filePath;
-
+                    passwordViewer.Password = e;
                     viewPage.SetPDFViewer(passwordViewer);
                     App.OpenedFilePathList.Add(filePath);
 
@@ -447,6 +437,7 @@ namespace PDFViewer
             {
                 return;
             }
+
             if (mainPage.CanSave)
             {
                 string fileName = (dragablzItem.Content as TabItemExt).FileName;
@@ -476,6 +467,7 @@ namespace PDFViewer
                 tabControl.Items.Remove(dragablzItem.Content);
             }
 
+            mainPage.CloseFile();
             if (tabControl.Items.Count == 0)
             {
                 HomePageButton.IsToggled = true;
@@ -514,13 +506,13 @@ namespace PDFViewer
             while (count > 0)
             {
                 TabItemExt item = TabControl.Items[0] as TabItemExt;
-
                 MainPage mainPage = item.Content as MainPage;
                 if (mainPage == null)
                 {
                     count--;
                     continue;
                 }
+
                 if (mainPage.CanSave)
                 {
                     string fileName = item.FileName;
@@ -551,6 +543,8 @@ namespace PDFViewer
                     TabControl.Items.Remove(item);
                     count--;
                 }
+
+                mainPage.CloseFile();
             }
 
             if (count == 0)
@@ -610,7 +604,6 @@ namespace PDFViewer
             this.Close();
         }
 
-
         private void HomePageButton_Toggled(object sender, RoutedEventArgs e)
         {
             if (sender is HomePageButton homePageButton && homePageButton.IsToggled)
@@ -623,11 +616,11 @@ namespace PDFViewer
             }
         }
 
-        public event PropertyChangedEventHandler PropertyChanged;
         protected virtual void OnPropertyChanged(string propertyName = null)
         {
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
         }
+
         protected bool UpdateProper<T>(ref T properValue, T newValue, [CallerMemberName] string properName = "")
         {
             if (object.Equals(properValue, newValue))