Quellcode durchsuchen

Merge branch 'dev' of http://git.kdan.cc:8865/Windows/PDFOffice_Windows_exe into dev

OYXH\oyxh vor 2 Jahren
Ursprung
Commit
f6c66e38b1

BIN
PDF Office/ComPDFKit.Viewer.dll


+ 1 - 1
PDF Office/Model/DialogNames.cs

@@ -57,7 +57,7 @@ namespace PDF_Office.Model
         public static string SetPasswordDialog = "SetPasswordDialog";
 
         /// <summary>
-        /// 解压缩弹窗
+        /// 密码判定弹窗
         /// </summary>
         public static string CheckPasswordDialog = "CheckPasswordDialog";
 

+ 46 - 42
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDocumentContentViewModel.cs

@@ -483,7 +483,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
                     else
                     {
                         e.HasMorePages = false;
-                        if (PrintIndex%2 == 0)
+                        if (PrintIndex % 2 == 0)
                         {
                             this.printDocumentEvent.GetEvent<SendFinishedFrontSideEvent>().Publish(new FinishedFrontSide { Unicode = this.Unicode });
                         }
@@ -590,30 +590,30 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
                     ///仅当每一页第一张纸打印时,进行一次渲染,,更换打印底图
                     if (HorizonPaperIndex == 0 && VerticalPaperIndex == 0)
                     {
-                            PosterCurrentBitmap = ToolMethod.RenderPageBitmapNoWait(PDFViewer.Document, (int)(cPDFPage.PageSize.Width * PDFToMediaDpiRatio * (posterInfo.TileRatio / 100.0) * widthDpiRatio), (int)(cPDFPage.PageSize.Height * PDFToMediaDpiRatio * (posterInfo.TileRatio / 100.0) * heightDpiRatio), PrintSettingsInfo.PageRangeList[posterPrintPaperIndex], PrintSettingsInfo.IsPrintWithAnnot, PrintSettingsInfo.IsPrintWithForm);
-                            if (PrintSettingsInfo.IsGrayscale)
-                            {
-                                PosterCurrentBitmap = ToGray(PosterCurrentBitmap, 0);
-                            }
-                            HorizonPaperCount = (int)Math.Ceiling((double)PosterCurrentBitmap.Width / effectiveWidth);
-                            VerticalPaperCount = (int)Math.Ceiling(((double)PosterCurrentBitmap.Height / effectiveHeight));
-                            WholeCountSinglePage = HorizonPaperCount * VerticalPaperCount;//每一轮的总页数  
-                            if (WholeCountSinglePage != 0)
-                            {
-                                PreviewWidth = (double)(effectiveWidth * HorizonPaperCount);
-                                PreviewHeight = (double)(effectiveHeight * VerticalPaperCount);
-                                DisplayBitmap = new Bitmap((int)PreviewWidth, (int)PreviewHeight);
-                            }
-                            else
-                            {
-                                PreviewWidth = effectiveWidth;
-                                PreviewHeight = effectiveHeight;
-                                DisplayBitmap = new Bitmap((int)effectiveWidth, (int)effectiveHeight);
-                            }
-                            //取到和渲染一样的Bitmap
-                            startPoint.X = (int)((PreviewWidth - PosterCurrentBitmap.Width) / 2);
-                            startPoint.Y = (int)((PreviewHeight - PosterCurrentBitmap.Height) / 2);
-                            DisplayBitmap = CombineBitmap(DisplayBitmap, PosterCurrentBitmap, startPoint);
+                        PosterCurrentBitmap = ToolMethod.RenderPageBitmapNoWait(PDFViewer.Document, (int)(cPDFPage.PageSize.Width * PDFToMediaDpiRatio * (posterInfo.TileRatio / 100.0) * widthDpiRatio), (int)(cPDFPage.PageSize.Height * PDFToMediaDpiRatio * (posterInfo.TileRatio / 100.0) * heightDpiRatio), PrintSettingsInfo.PageRangeList[posterPrintPaperIndex], PrintSettingsInfo.IsPrintWithAnnot, PrintSettingsInfo.IsPrintWithForm);
+                        if (PrintSettingsInfo.IsGrayscale)
+                        {
+                            PosterCurrentBitmap = ToGray(PosterCurrentBitmap, 0);
+                        }
+                        HorizonPaperCount = (int)Math.Ceiling((double)PosterCurrentBitmap.Width / effectiveWidth);
+                        VerticalPaperCount = (int)Math.Ceiling(((double)PosterCurrentBitmap.Height / effectiveHeight));
+                        WholeCountSinglePage = HorizonPaperCount * VerticalPaperCount;//每一轮的总页数  
+                        if (WholeCountSinglePage != 0)
+                        {
+                            PreviewWidth = (double)(effectiveWidth * HorizonPaperCount);
+                            PreviewHeight = (double)(effectiveHeight * VerticalPaperCount);
+                            DisplayBitmap = new Bitmap((int)PreviewWidth, (int)PreviewHeight);
+                        }
+                        else
+                        {
+                            PreviewWidth = effectiveWidth;
+                            PreviewHeight = effectiveHeight;
+                            DisplayBitmap = new Bitmap((int)effectiveWidth, (int)effectiveHeight);
+                        }
+                        //取到和渲染一样的Bitmap
+                        startPoint.X = (int)((PreviewWidth - PosterCurrentBitmap.Width) / 2);
+                        startPoint.Y = (int)((PreviewHeight - PosterCurrentBitmap.Height) / 2);
+                        DisplayBitmap = CombineBitmap(DisplayBitmap, PosterCurrentBitmap, startPoint);
                     }
                     if (WholeCountSinglePage > 1)
                     {
@@ -1676,12 +1676,14 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
                 {
                     documentSettingsInfo.IsSettingsChanged = true;
                 }
-                if (!documentSettingsInfo.IsSettingsChanged)
+                if (documentSettingsInfo.IsSettingsChanged)
                 {
                     documentSettingsInfo.DocumentWidth = PrintSettingsInfo.PrintDocument.DefaultPageSettings.PaperSize.Width;
                     documentSettingsInfo.DocumentHeight = PrintSettingsInfo.PrintDocument.DefaultPageSettings.PaperSize.Height;
                     documentSettingsInfo.margins = PrintSettingsInfo.PrintDocument.DefaultPageSettings.Margins;
                     documentSettingsInfo.DocumentBounds = PrintSettingsInfo.PrintDocument.DefaultPageSettings.Bounds;
+                    documentSettingsInfo.IsSettingsChanged = false;
+
                 }
                 CaculatePrintedPageCount();
                 SetPaperCollection();
@@ -1758,23 +1760,24 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
         /// <summary>
         /// 设置预览(除海报)
         /// </summary>
-        public void SetPreviewExceptPoster()
+        public void SetPreview()
         {
+
+            if (PrintSettingsInfo.EnumPrintOrientation == EnumPrintOrientation.StatusPortrait)
+            {
+                PaperWidth = String.Format("{0:F1}", (documentSettingsInfo.DocumentWidth) / 100.0 * 25.4);
+                PaperHeight = String.Format("{0:F1}", (documentSettingsInfo.DocumentHeight) / 100.0 * 25.4);
+            }
+            else
+            {
+                PaperHeight = String.Format("{0:F1}", (documentSettingsInfo.DocumentWidth) / 100.0 * 25.4);
+                PaperWidth = String.Format("{0:F1}", (documentSettingsInfo.DocumentHeight) / 100.0 * 25.4);
+            }
             if (PrintSettingsInfo.PrintModInfo.EnumPrintMod != EnumPrintMod.StatusPoster)
             {
-                if (PrintSettingsInfo.EnumPrintOrientation == EnumPrintOrientation.StatusPortrait)
-                {
-                    PaperWidth = String.Format("{0:F1}", (documentSettingsInfo.DocumentWidth) / 100.0 * 25.4);
-                    PaperHeight = String.Format("{0:F1}", (documentSettingsInfo.DocumentHeight) / 100.0 * 25.4);
-                }
-                else
-                {
-                    PaperHeight = String.Format("{0:F1}", (documentSettingsInfo.DocumentWidth) / 100.0 * 25.4);
-                    PaperWidth = String.Format("{0:F1}", (documentSettingsInfo.DocumentHeight) / 100.0 * 25.4);
-                }
                 SetViewBox(double.Parse(PaperHeight), double.Parse(PaperWidth));
+                blankPageBitmap = CreateBlankBitmap();
             }
-            blankPageBitmap = CreateBlankBitmap();
         }
 
         public System.Drawing.Image ResizeImage(System.Drawing.Image image, System.Drawing.Size size)
@@ -2852,21 +2855,22 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
             {
                 if (PrintSettingsInfo.PrintModInfo.EnumPrintMod == EnumPrintMod.StatusSize)
                 {
-                    SetPreviewExceptPoster();
+                    SetPreview();
                     PreviewModSize(TargetPaperList[TargetPaperIndex]);
                 }
                 else if (PrintSettingsInfo.PrintModInfo.EnumPrintMod == EnumPrintMod.StatusPoster)
                 {
+                    SetPreview();
                     PreviewModPoster(TargetPaperList[TargetPaperIndex]);
                 }
                 else if (PrintSettingsInfo.PrintModInfo.EnumPrintMod == EnumPrintMod.StatusMultiple)
                 {
-                    SetPreviewExceptPoster();
+                    SetPreview();
                     PreviewModMultiple(TargetPaperList[TargetPaperIndex]);
                 }
                 else if (PrintSettingsInfo.PrintModInfo.EnumPrintMod == EnumPrintMod.StatusBooklet)
                 {
-                    SetPreviewExceptPoster();
+                    SetPreview();
                     PreviewModBooklet(TargetPaperList[TargetPaperIndex]);
                 }
             }
@@ -2952,7 +2956,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
                 documentSettingsInfo.DocumentHeight = PrintSettingsInfo.PrintDocument.DefaultPageSettings.PaperSize.Height;
                 documentSettingsInfo.margins = PrintSettingsInfo.PrintDocument.DefaultPageSettings.Margins;
                 documentSettingsInfo.DocumentBounds = PrintSettingsInfo.PrintDocument.DefaultPageSettings.Bounds;
-                SetPreviewExceptPoster();
+                SetPreview();
                 CaculatePrintedPageCount();
                 SetPaperCollection();
                 PaintPageByCurrentPreviewIndex(1);

+ 5 - 1
PDF Office/ViewModels/Dialog/ToolsDialogs/SaftyDialogs/DeleteSafetySettingsDialogViewModel.cs

@@ -44,7 +44,11 @@ namespace PDF_Office.ViewModels.Dialog.ToolsDialogs.SaftyDialogs
         /// 检测是否需要输入密码
         /// </summary>
         /// <returns>
-        /// EnumNeedPassword.StatusVerifyPassword:需要确认密码;
+        /// EnumNeedPassword.Status
+        /// 
+        /// 
+        /// 
+        /// :需要确认密码;
         /// EnumNeedPassword.StatusDirectDescrypt:直接执行操作
         /// EnumNeedPassword.StatusCannotDecrypt:无可执行操作。
         /// </returns>

+ 6 - 4
PDF Office/ViewModels/FillAndSign/FillAndSignContentViewModel.cs

@@ -167,17 +167,17 @@ namespace PDF_Office.ViewModels.FillAndSign
                     break;
                 case "RbtnRectangle"://矩形
                     Shape = "RectShape";
-                    ShapePoints = new List<List<Point>> { new List<Point> { new Point(0.19995, 5), new Point(28, 5), new Point(28, 27), new Point(0.19995, 27), new Point(0.19995, 5) } };
+                    ShapePoints = new List<List<Point>> { new List<Point> { new Point(5, 5), new Point(28, 5) }, new List<Point> { new Point(28, 5), new Point(28, 27) }, new List<Point> { new Point(28, 27), new Point(5, 27) }, new List<Point> {  new Point(5, 27)  ,new Point(5, 5)} };
                     annotArgs = GetStamp();
                     break;
                 case "RbtnLine"://下划线
                     Shape = "LineShape";
-                    ShapePoints = new List<List<Point>> { new List<Point> { new Point(12.19995, 10), new Point(36, 10) } };
+                    ShapePoints = new List<List<Point>> { new List<Point> { new Point(3.19995, 3.20001), new Point(28, 3.20001) } };
                     annotArgs = GetStamp();
                     break;
                 case "RbtnPoint":
                     Shape = "DotShape";
-                    ShapePoints = new List<List<Point>> { new List<Point> { new Point(12.19995, 10), new Point(12.19995, 10) } };
+                    ShapePoints = new List<List<Point>> { new List<Point> { new Point(3.19995, 3.19995), new Point(3.19995, 3.19995) } };
                     LineWidthMultiple = 5;
                     annotArgs = GetStamp();
                     break;
@@ -353,6 +353,8 @@ namespace PDF_Office.ViewModels.FillAndSign
                 annotAttribsList[AnnotAttrib.Thickness] = freehandArgs.LineWidth;
                 annotAttribsList[AnnotAttrib.NoteText] = freehandArgs.Content;
                 annotAttribsList[AnnotAttrib.Path]= freehandArgs.RawPointList;
+                annotAttribsList[AnnotAttrib.Width] = freehandArgs.Width;
+                annotAttribsList[AnnotAttrib.Height] = freehandArgs.Height;
                 AddToPropertyPanel("ShapFillProperty", "Freehand", newSelectedArgs, annotAttribsList);
                 //GetStamp();
                 return freehandArgs;
@@ -474,7 +476,7 @@ namespace PDF_Office.ViewModels.FillAndSign
             {
                 propertyPanel.annotlists = null;
                 propertyPanel.annot = null;
-                return;
+                
             }
 
             if (annotAttribsList != null && annotAttribsList.Count != 0)

+ 6 - 4
PDF Office/ViewModels/FillAndSign/PropertyPanel/ShapFillPropertyViewModel.cs

@@ -137,7 +137,8 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
         {
             Dictionary<AnnotArgsType, object> changeData = new Dictionary<AnnotArgsType, object>();
             fillAndSignContentViewModel.LineWidthMultiple = 1;
-            
+            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Width, 60);
+            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Height, 60);
             switch (tag)
             {
                 case "HookShape":
@@ -177,7 +178,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                         if (FillAndSignContentViewModel.IsEdit)
                         {
                             PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
-                            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, new List<List<Point>> { new List<Point> { new Point(0.19995, 5), new Point(28, 5), new Point(28, 27), new Point(0.19995, 27), new Point(0.19995, 5) } });
+                            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, new List<List<Point>> { new List<Point> { new Point(5, 5), new Point(28, 5) }, new List<Point> { new Point(28, 5), new Point(28, 27) }, new List<Point> { new Point(28, 27), new Point(5, 27) }, new List<Point> { new Point(5, 27), new Point(5, 5) } } );
                         }
                         //fillAndSignContentViewModel.ShapePoints = new List<List<Point>> { new List<Point> { new Point(0.19995, 5), new Point(28, 5), new Point(28, 27), new Point(0.19995, 27), new Point(0.19995, 5) } };
                         //fillAndSignContentViewModel.SetStamp();
@@ -193,7 +194,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                         if (FillAndSignContentViewModel.IsEdit)
                         {
                             PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
-                            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, new List<List<Point>> { new List<Point> { new Point(12.19995, 10), new Point(36, 10) } });
+                            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, new List<List<Point>> { new List<Point> { new Point(3.19995, 3.20001), new Point(28, 3.20001) } });
                         }
                         //fillAndSignContentViewModel.ShapePoints = new List<List<Point>> { new List<Point> { new Point(12.19995, 10), new Point(36, 10) } };
                         //fillAndSignContentViewModel.SetStamp();
@@ -212,8 +213,9 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                         if (FillAndSignContentViewModel.IsEdit)
                         {
                             fillAndSignContentViewModel.LineWidthMultiple = 4;
+                            
                             PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth* fillAndSignContentViewModel.LineWidthMultiple);
-                            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, new List<List<Point>> { new List<Point> { new Point(12.19995, 10), new Point(12.19995, 10) } });
+                            PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, new List<List<Point>> { new List<Point> { new Point(3.19995, 3.19995), new Point(3.19995, 3.19995) } });
                             
                         }
                         //fillAndSignContentViewModel.ShapePoints = new List<List<Point>> { new List<Point> { new Point(0.19995, 1.19995), new Point(0.19995, -1.19995) }, new List<Point> { new Point(-0.25995, 0.89995), new Point(0.25995, -0.89995) }, new List<Point> { new Point(-1.19995, 0.19995), new Point(0.19995, 1.19995) } };

+ 1 - 0
PDF Office/ViewModels/MainContentViewModel.cs

@@ -262,6 +262,7 @@ namespace PDF_Office.ViewModels
                     {
                         string filePath = PDFViewer.Document.FilePath;
                         PDFViewer.Document.UnlockWithPassword(result.Password);
+                        PDFViewer.Tag = result.Password;
                     }
                     ///TODO:
                     ///此处填入需要执行的代码

+ 146 - 146
PDF Office/ViewModels/Tools/ConverterBarContentViewModel.cs

@@ -27,32 +27,32 @@ namespace PDF_Office.ViewModels.Tools
 
         private string _pageIndex = "0";
 
-        /// <value>
-        /// 当前页
-        /// </value>
-        public string PageIndex
-        {
-            get { return _pageIndex; }
-            set
-            {
-                SetProperty(ref _pageIndex, value);
-                App.mainWindowViewModel.Value = int.Parse(PageIndex);
-            }
-        }
+        ///// <value>
+        ///// 当前页
+        ///// </value>
+        //public string PageIndex
+        //{
+        //    get { return _pageIndex; }
+        //    set
+        //    {
+        //        SetProperty(ref _pageIndex, value);
+        //        App.mainWindowViewModel.Value = int.Parse(PageIndex);
+        //    }
+        //}
 
-        private string _pageNumber = "0";
-        /// <value>
-        /// 总页数
-        /// </value>
-        public string PageNumber
-        {
-            get { return _pageNumber; }
-            set
-            {
-                SetProperty(ref _pageNumber, value);
-                App.mainWindowViewModel.MaxValue = int.Parse(PageNumber);
-            }
-        }
+        //private string _pageNumber = "0";
+        ///// <value>
+        ///// 总页数
+        ///// </value>
+        //public string PageNumber
+        //{
+        //    get { return _pageNumber; }
+        //    set
+        //    {
+        //        SetProperty(ref _pageNumber, value);
+        //        App.mainWindowViewModel.MaxValue = int.Parse(PageNumber);
+        //    }
+        //}
 
         public DelegateCommand<object> ToConverterCommand { get; set; }
 
@@ -127,131 +127,131 @@ namespace PDF_Office.ViewModels.Tools
                 }
             }
         }
-        private void ConverterClear() {
-            ConverterHelper.Clear();
-            App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed;
-        }
-        private void SetProgress(int pageIndex)
-        {
-            PageIndex = pageIndex.ToString();
-            App.mainWindowViewModel.IsProcessVisible=System.Windows.Visibility.Visible;
-            if (PageIndex == PageNumber) { App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed; }
-        }
+        //private void ConverterClear() {
+        //    ConverterHelper.Clear();
+        //    App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed;
+        //}
+        //private void SetProgress(int pageIndex)
+        //{
+        //    PageIndex = pageIndex.ToString();
+        //    App.mainWindowViewModel.IsProcessVisible=System.Windows.Visibility.Visible;
+        //    if (PageIndex == PageNumber) { App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed; }
+        //}
         
-        public async void OnOpened(Prism.Services.Dialogs.DialogResult e)
-        {
-            if (e.Result == Prism.Services.Dialogs.ButtonResult.Cancel) { return; }
-            bool result = false;
-            string convertType = "";
-            OnProgress GetProgress = null;
-            GetProgress += SetProgress;
-            App.mainWindowViewModel.ProcessCloseAction= ConverterClear;
-            convertType = e.Parameters.GetValue<string>(ParameterNames.ConverterType).ToString();
-            switch (convertType)
-            {
-                case "CSV":
-                    ConverterCSVDialogModel ConverterCSVModel=e.Parameters.GetValue<ConverterCSVDialogModel>(ParameterNames.ConverterTypeModel);
+        //public async void OnOpened(Prism.Services.Dialogs.DialogResult e)
+        //{
+        //    if (e.Result == Prism.Services.Dialogs.ButtonResult.Cancel) { return; }
+        //    bool result = false;
+        //    string convertType = "";
+        //    OnProgress GetProgress = null;
+        //    GetProgress += SetProgress;
+        //    App.mainWindowViewModel.ProcessCloseAction= ConverterClear;
+        //    convertType = e.Parameters.GetValue<string>(ParameterNames.ConverterType).ToString();
+        //    switch (convertType)
+        //    {
+        //        case "CSV":
+        //            ConverterCSVDialogModel ConverterCSVModel=e.Parameters.GetValue<ConverterCSVDialogModel>(ParameterNames.ConverterTypeModel);
                    
-                    if (ConverterCSVModel != null)
-                    {
-                        PageNumber = ConverterCSVModel.PageIndexLists.Count().ToString();
+        //            if (ConverterCSVModel != null)
+        //            {
+        //                PageNumber = ConverterCSVModel.PageIndexLists.Count().ToString();
                         
-                        for (int i = 0; ConverterCSVModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterCSVModel.PageIndexLists[i] = ConverterCSVModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.CSVConvert(ConverterCSVModel.InputPath, ConverterCSVModel.OutputPath, GetProgress, ConverterCSVModel.PageIndexLists, ConverterCSVModel.Pawssword, ConverterCSVModel.csvOptions);
+        //                for (int i = 0; ConverterCSVModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterCSVModel.PageIndexLists[i] = ConverterCSVModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.CSVConvert(ConverterCSVModel.InputPath, ConverterCSVModel.OutputPath, GetProgress, ConverterCSVModel.PageIndexLists, ConverterCSVModel.Pawssword, ConverterCSVModel.csvOptions);
 
-                    }
-                    break;
-                case "Excel":
-                    ConverterExcelDialogModel ConverterExcelModel = e.Parameters.GetValue<ConverterExcelDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterExcelModel != null)
-                    {
-                        PageNumber = ConverterExcelModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterExcelModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterExcelModel.PageIndexLists[i] = ConverterExcelModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.ExcelConvert(ConverterExcelModel.InputPath, ConverterExcelModel.OutputPath, GetProgress, ConverterExcelModel.PageIndexLists, ConverterExcelModel.Pawssword, ConverterExcelModel.excelOptions);
-                    }
-                    break;
-                case "HTML":
-                    ConverterHTMLDialogModel ConverterHTMLModel = e.Parameters.GetValue<ConverterHTMLDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterHTMLModel != null)
-                    {
-                        PageNumber = ConverterHTMLModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterHTMLModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterHTMLModel.PageIndexLists[i] = ConverterHTMLModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.HTMLConvert(ConverterHTMLModel.InputPath, ConverterHTMLModel.OutputPath, GetProgress, ConverterHTMLModel.PageIndexLists, ConverterHTMLModel.Pawssword, ConverterHTMLModel.htmlOptions);
-                    }
-                    break;
-                case "Img":
-                    ConverterImgDialogModel ConverterImgModel = e.Parameters.GetValue<ConverterImgDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterImgModel != null)
-                    {
-                        PageNumber = ConverterImgModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterImgModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterImgModel.PageIndexLists[i] = ConverterImgModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.ImgConvert(ConverterImgModel.InputPath, ConverterImgModel.OutputPath, GetProgress, ConverterImgModel.PageIndexLists, ConverterImgModel.Pawssword, ConverterImgModel.imageType, ConverterImgModel.imgOptions);
-                    }
-                    break;
-                case "PPT":
-                    ConverterPPTDialogModel ConverterPPTModel = e.Parameters.GetValue<ConverterPPTDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterPPTModel != null)
-                    {
-                        PageNumber = ConverterPPTModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterPPTModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterPPTModel.PageIndexLists[i] = ConverterPPTModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.PPTConvert(ConverterPPTModel.InputPath, ConverterPPTModel.OutputPath, GetProgress, ConverterPPTModel.PageIndexLists, ConverterPPTModel.Pawssword, ConverterPPTModel.pPTOptions);
-                    }
-                    break;
-                case "RTF":
-                    ConverterRTFDialogModel ConverterRTFModel = e.Parameters.GetValue<ConverterRTFDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterRTFModel != null)
-                    {
-                        PageNumber = ConverterRTFModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterRTFModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterRTFModel.PageIndexLists[i] = ConverterRTFModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.RTFConvert(ConverterRTFModel.InputPath, ConverterRTFModel.OutputPath, GetProgress, ConverterRTFModel.PageIndexLists, ConverterRTFModel.Pawssword, ConverterRTFModel.rTFOptions);
-                    }
-                    break;
-                case "Text":
-                    ConverterTextDialogModel ConverterTextModel = e.Parameters.GetValue<ConverterTextDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterTextModel != null)
-                    {
-                        PageNumber = ConverterTextModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterTextModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterTextModel.PageIndexLists[i] = ConverterTextModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.TxtConvert(ConverterTextModel.InputPath, ConverterTextModel.OutputPath, GetProgress, ConverterTextModel.PageIndexLists, ConverterTextModel.Pawssword, ConverterTextModel.txtOptions);
-                    }
-                    break;
-                case "Word":
-                    ConverterWordDialogModel ConverterWordModel = e.Parameters.GetValue<ConverterWordDialogModel>(ParameterNames.ConverterTypeModel);
-                    if (ConverterWordModel != null)
-                    {
-                        PageNumber = ConverterWordModel.PageIndexLists.Count().ToString();
-                        for (int i = 0; ConverterWordModel.PageIndexLists.Count > i; i++)
-                        {
-                            ConverterWordModel.PageIndexLists[i] = ConverterWordModel.PageIndexLists[i] + 1;
-                        }
-                        result = await ConverterHelper.WordConvert(ConverterWordModel.InputPath, ConverterWordModel.OutputPath, GetProgress, ConverterWordModel.PageIndexLists, ConverterWordModel.Pawssword, ConverterWordModel.wordOptions);
-                    }
-                    break;
-                default:
-                    break;
-            }
-        }
+        //            }
+        //            break;
+        //        case "Excel":
+        //            ConverterExcelDialogModel ConverterExcelModel = e.Parameters.GetValue<ConverterExcelDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterExcelModel != null)
+        //            {
+        //                PageNumber = ConverterExcelModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterExcelModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterExcelModel.PageIndexLists[i] = ConverterExcelModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.ExcelConvert(ConverterExcelModel.InputPath, ConverterExcelModel.OutputPath, GetProgress, ConverterExcelModel.PageIndexLists, ConverterExcelModel.Pawssword, ConverterExcelModel.excelOptions);
+        //            }
+        //            break;
+        //        case "HTML":
+        //            ConverterHTMLDialogModel ConverterHTMLModel = e.Parameters.GetValue<ConverterHTMLDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterHTMLModel != null)
+        //            {
+        //                PageNumber = ConverterHTMLModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterHTMLModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterHTMLModel.PageIndexLists[i] = ConverterHTMLModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.HTMLConvert(ConverterHTMLModel.InputPath, ConverterHTMLModel.OutputPath, GetProgress, ConverterHTMLModel.PageIndexLists, ConverterHTMLModel.Pawssword, ConverterHTMLModel.htmlOptions);
+        //            }
+        //            break;
+        //        case "Img":
+        //            ConverterImgDialogModel ConverterImgModel = e.Parameters.GetValue<ConverterImgDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterImgModel != null)
+        //            {
+        //                PageNumber = ConverterImgModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterImgModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterImgModel.PageIndexLists[i] = ConverterImgModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.ImgConvert(ConverterImgModel.InputPath, ConverterImgModel.OutputPath, GetProgress, ConverterImgModel.PageIndexLists, ConverterImgModel.Pawssword, ConverterImgModel.imageType, ConverterImgModel.imgOptions);
+        //            }
+        //            break;
+        //        case "PPT":
+        //            ConverterPPTDialogModel ConverterPPTModel = e.Parameters.GetValue<ConverterPPTDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterPPTModel != null)
+        //            {
+        //                PageNumber = ConverterPPTModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterPPTModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterPPTModel.PageIndexLists[i] = ConverterPPTModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.PPTConvert(ConverterPPTModel.InputPath, ConverterPPTModel.OutputPath, GetProgress, ConverterPPTModel.PageIndexLists, ConverterPPTModel.Pawssword, ConverterPPTModel.pPTOptions);
+        //            }
+        //            break;
+        //        case "RTF":
+        //            ConverterRTFDialogModel ConverterRTFModel = e.Parameters.GetValue<ConverterRTFDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterRTFModel != null)
+        //            {
+        //                PageNumber = ConverterRTFModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterRTFModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterRTFModel.PageIndexLists[i] = ConverterRTFModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.RTFConvert(ConverterRTFModel.InputPath, ConverterRTFModel.OutputPath, GetProgress, ConverterRTFModel.PageIndexLists, ConverterRTFModel.Pawssword, ConverterRTFModel.rTFOptions);
+        //            }
+        //            break;
+        //        case "Text":
+        //            ConverterTextDialogModel ConverterTextModel = e.Parameters.GetValue<ConverterTextDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterTextModel != null)
+        //            {
+        //                PageNumber = ConverterTextModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterTextModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterTextModel.PageIndexLists[i] = ConverterTextModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.TxtConvert(ConverterTextModel.InputPath, ConverterTextModel.OutputPath, GetProgress, ConverterTextModel.PageIndexLists, ConverterTextModel.Pawssword, ConverterTextModel.txtOptions);
+        //            }
+        //            break;
+        //        case "Word":
+        //            ConverterWordDialogModel ConverterWordModel = e.Parameters.GetValue<ConverterWordDialogModel>(ParameterNames.ConverterTypeModel);
+        //            if (ConverterWordModel != null)
+        //            {
+        //                PageNumber = ConverterWordModel.PageIndexLists.Count().ToString();
+        //                for (int i = 0; ConverterWordModel.PageIndexLists.Count > i; i++)
+        //                {
+        //                    ConverterWordModel.PageIndexLists[i] = ConverterWordModel.PageIndexLists[i] + 1;
+        //                }
+        //                result = await ConverterHelper.WordConvert(ConverterWordModel.InputPath, ConverterWordModel.OutputPath, GetProgress, ConverterWordModel.PageIndexLists, ConverterWordModel.Pawssword, ConverterWordModel.wordOptions);
+        //            }
+        //            break;
+        //        default:
+        //            break;
+        //    }
+        //}
 
         public bool IsNavigationTarget(NavigationContext navigationContext)
         {

+ 68 - 67
PDF Office/ViewModels/Tools/ToolsBarContentViewModel.cs

@@ -34,10 +34,10 @@ namespace PDF_Office.ViewModels.Tools
 
         public IEventAggregator eventAggregator;
 
-        private IntPtr compressingIntpr = IntPtr.Zero;
+       
 
         private CPDFDocument.GetPageIndexDelegate indexDelegate = null;
-        private CPDFDocument tempDocument;
+    
 
         public string unicode = null;
 
@@ -48,32 +48,33 @@ namespace PDF_Office.ViewModels.Tools
 
         private string _pageIndex = "0";
 
-        /// <value>
-        /// 当前页
-        /// </value>
-        public string PageIndex
-        {
-            get { return _pageIndex; }
-            set
-            {
-                SetProperty(ref _pageIndex, value);
-                App.mainWindowViewModel.Value = int.Parse(PageIndex);
-            }
-        }
-
-        private string _pageNumber = "";
-        /// <value>
-        /// 总页数
-        /// </value>
-        public string PageNumber
-        {
-            get { return _pageNumber; }
-            set
-            {
-                SetProperty(ref _pageNumber, value);
-                App.mainWindowViewModel.MaxValue = int.Parse(PageNumber);
-            }
-        }
+        ///// <value>
+        ///// 当前页
+        ///// </value>
+        //public string PageIndex
+        //{
+        //    get { return _pageIndex; }
+        //    set
+        //    {
+        //        SetProperty(ref _pageIndex, value);
+        //        App.mainWindowViewModel.Value = int.Parse(PageIndex);
+        //    }
+        //}
+    //private CPDFDocument tempDocument;
+    //private IntPtr compressingIntpr = IntPtr.Zero;
+        //private string _pageNumber = "";
+        ///// <value>
+        ///// 总页数
+        ///// </value>
+        //public string PageNumber
+        //{
+        //    get { return _pageNumber; }
+        //    set
+        //    {
+        //        SetProperty(ref _pageNumber, value);
+        //        App.mainWindowViewModel.MaxValue = int.Parse(PageNumber);
+        //    }
+        //}
         public DelegateCommand CompressCommand { get; set; }
         public DelegateCommand MergeCommand { get; set; }
         public DelegateCommand SetPasswordCommand { get; set; }
@@ -115,45 +116,45 @@ namespace PDF_Office.ViewModels.Tools
             });
         }
 
-        private int GetIndex(int pageindex)
-        {
-            PageIndex = (pageindex + 1).ToString();
-            App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Visible;
-            if (PageIndex == PageNumber) { App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed; }
-            return 0;
-        }
-        private void CompressClear()
-        {
-            tempDocument.CompressFile_Cancel(compressingIntpr);
-            App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed;
-        }
-        public async void OnOpened(Prism.Services.Dialogs.DialogResult e)
-        {
-            if (e.Result == Prism.Services.Dialogs.ButtonResult.Cancel) { return; }
-            CPDFDocument doc = null;
-            string filepath = "";
-            string password = "";
-            int compressquality = 45;
-            doc = e.Parameters.GetValue<CPDFDocument>(ParameterNames.PDFDocument);
-            filepath = e.Parameters.GetValue<string>(ParameterNames.FilePath);
-            password = e.Parameters.GetValue<string>(ParameterNames.PassWord);
-            compressquality = e.Parameters.GetValue<int>("compressDialogModel.CompressQuality");
-            if (doc != null)
-            {
-                PageNumber = doc.PageCount.ToString();
-                CPDFDocument document = CPDFDocument.InitWithFilePath(doc.FilePath);
-                document.UnlockWithPassword(password);
-                indexDelegate += GetIndex;
-                compressingIntpr = document.CompressFile_Init(compressquality, indexDelegate);
-                //GC.KeepAlive(indexDelegate);
-                tempDocument = document;
-                Trace.WriteLine("compressDialogModel.CompressQuality" + compressquality);
-                App.mainWindowViewModel.ProcessCloseAction = CompressClear;
-                await Task.Run<bool>(() => { return document.CompressFile_Start(compressingIntpr, filepath); });
-                CommonHelper.ShowFileBrowser(filepath);
-                document.Release();
-            }
-        }
+        //private int GetIndex(int pageindex)
+        //{
+        //    PageIndex = (pageindex + 1).ToString();
+        //    App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Visible;
+        //    if (PageIndex == PageNumber) { App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed; }
+        //    return 0;
+        //}
+        //private void CompressClear()
+        //{
+        //    tempDocument.CompressFile_Cancel(compressingIntpr);
+        //    App.mainWindowViewModel.IsProcessVisible = System.Windows.Visibility.Collapsed;
+        //}
+        //public async void OnOpened(Prism.Services.Dialogs.DialogResult e)
+        //{
+        //    if (e.Result == Prism.Services.Dialogs.ButtonResult.Cancel) { return; }
+        //    CPDFDocument doc = null;
+        //    string filepath = "";
+        //    string password = "";
+        //    int compressquality = 45;
+        //    doc = e.Parameters.GetValue<CPDFDocument>(ParameterNames.PDFDocument);
+        //    filepath = e.Parameters.GetValue<string>(ParameterNames.FilePath);
+        //    password = e.Parameters.GetValue<string>(ParameterNames.PassWord);
+        //    compressquality = e.Parameters.GetValue<int>("compressDialogModel.CompressQuality");
+        //    if (doc != null)
+        //    {
+        //        PageNumber = doc.PageCount.ToString();
+        //        CPDFDocument document = CPDFDocument.InitWithFilePath(doc.FilePath);
+        //        document.UnlockWithPassword(password);
+        //        indexDelegate += GetIndex;
+        //        compressingIntpr = document.CompressFile_Init(compressquality, indexDelegate);
+        //        //GC.KeepAlive(indexDelegate);
+        //        tempDocument = document;
+        //        Trace.WriteLine("compressDialogModel.CompressQuality" + compressquality);
+        //        App.mainWindowViewModel.ProcessCloseAction = CompressClear;
+        //        await Task.Run<bool>(() => { return document.CompressFile_Start(compressingIntpr, filepath); });
+        //        CommonHelper.ShowFileBrowser(filepath);
+        //        document.Release();
+        //    }
+        //}
         private void MergeDialog()
         {
             DialogParameters value = new DialogParameters();

+ 178 - 1
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -21,7 +21,11 @@ using ComPDFKit.PDFDocument;
 using PDFSettings.Settings;
 using PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs;
 using static PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs.SetPasswordDialogModel;
-
+using PDF_Office.Model.Dialog.ToolsDialogs;
+using DryIoc;
+using PDF_Office.Model.Dialog.ConverterDialogs;
+using static PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs.DeleteSafetySettintgsModel;
+
 namespace PDF_Office.ViewModels
 {
     public class ViewContentViewModel : BindableBase, INavigationAware
@@ -508,6 +512,16 @@ namespace PDF_Office.ViewModels
 
         public DelegateCommand ShowInFolderCommand { get; set; }
 
+        public DelegateCommand CompressCommand { get; set; }
+
+        public DelegateCommand MergeFileCommand { get; set; }
+
+        public DelegateCommand EncryptCommand { get; set; }
+
+        public DelegateCommand DecryptCommand { get; set; }
+
+        public DelegateCommand<string> ConvertCommand { get; set; }
+
         #endregion 命令
 
         public ViewContentViewModel(IRegionManager regionManager, IDialogService dialogService, IEventAggregator eventAggregator)
@@ -527,6 +541,11 @@ namespace PDF_Office.ViewModels
             PropertyCommand = new DelegateCommand(property);
             ShowInFolderCommand = new DelegateCommand(ShowInFolder);
             TabControlSelectionChangedCommand = new DelegateCommand<object>(TabControlSelectonChangedEvent);
+            CompressCommand = new DelegateCommand(compress);
+            MergeFileCommand = new DelegateCommand(mergeFile);
+            EncryptCommand = new DelegateCommand(encrypt);
+            DecryptCommand = new DelegateCommand(decrypt);
+            ConvertCommand = new DelegateCommand<string>(convert);
 
             ViwerRegionName = RegionNames.ViwerRegionName;
             SplitViewerRegionName = RegionNames.Viewer_SplitRegionName;
@@ -571,6 +590,164 @@ namespace PDF_Office.ViewModels
             EnterSelectedBar("TabItemAnnotation");
         }
 
+        /// <summary>
+        /// 转档
+        /// </summary>
+        /// <param name="obj"></param>
+        private void convert(string obj)
+        {
+           if(!string.IsNullOrEmpty(obj))
+            {
+                DialogParameters value = new DialogParameters();
+                value.Add(ParameterNames.PDFViewer, PDFViewer);
+                switch (obj)
+                {
+                    case "Word":
+                        dialogs.ShowDialog(DialogNames.ConverterWordDialog, value, e =>
+                        {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "Excel":
+                        dialogs.ShowDialog(DialogNames.ConverterExcelDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "PPT":
+                        dialogs.ShowDialog(DialogNames.ConverterPPTDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "RTF":
+                        dialogs.ShowDialog(DialogNames.ConverterRTFDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "CSV":
+                        dialogs.ShowDialog(DialogNames.ConverterCSVDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "HTML":
+                        dialogs.ShowDialog(DialogNames.ConverterHTMLDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "Text":
+                        dialogs.ShowDialog(DialogNames.ConverterTextDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    case "Image":
+                        dialogs.ShowDialog(DialogNames.ConverterImgDialog, value, e => {
+                            ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel();
+                            converterDialogsModel.OnOpened((DialogResult)e);
+                        });
+                        break;
+                    default:
+                        break;
+
+
+                }
+            }
+        }
+
+        /// <summary>
+        /// 解密
+        /// </summary>
+        private void decrypt()
+        {
+            if (!PDFViewer.Document.IsEncrypted)
+            {
+                MessageBoxEx.Show("No security settings available ");
+            }
+            else
+            {
+                VerifyPasswordResult result = SecurityHelper.VerifyPasswordByPasswordKind(PDFViewer.Document, EnumPasswordKind.StatusPermissionsPassword, dialogs);
+                if (result.IsDiscryptied)
+                {
+                    if (result.Password != null)
+                    {
+                        string filePath = PDFViewer.Document.FilePath;
+                        PDFViewer.Document.Release();
+                        PDFViewer.InitDocument(filePath);
+                        PDFViewer.Document.UnlockWithPassword(result.Password);
+                    }
+                    DialogParameters value = new DialogParameters();
+                    value.Add(ParameterNames.PDFDocument, PDFViewer.Document);
+                    dialogs.ShowDialog(DialogNames.DeleteSafetySettingsDialog, value, e => { });
+                }
+            }
+        }
+
+        /// <summary>
+        /// 加密
+        /// </summary>
+        private void encrypt()
+        {
+            if (!this.SecurityInfo.IsPasswordChanged)
+            {
+                VerifyPasswordResult result = SecurityHelper.VerifyPasswordByPasswordKind(PDFViewer.Document, EnumPasswordKind.StatusPermissionsPassword, dialogs);
+                if (result.IsDiscryptied)
+                {
+                    if (result.Password != null)
+                    {
+                        string filePath = PDFViewer.Document.FilePath;
+                        PDFViewer.Document.Release();
+                        PDFViewer.InitDocument(filePath);
+                        PDFViewer.Document.UnlockWithPassword(result.Password);
+                    }
+                }
+            }
+
+            DialogParameters value = new DialogParameters();
+            value.Add(ParameterNames.PDFViewer, this.PDFViewer);
+            value.Add(ParameterNames.ViewContentViewModel, this);
+            dialogs.ShowDialog(DialogNames.SetPasswordDialog, value, e =>
+            {
+                if (e.Result == ButtonResult.OK)
+                {
+                    SecurityHelper.IsPasswordChanged = true;
+                    if (this.SecurityInfo.IsPasswordChanged)
+                    {
+                        this.PDFViewer.UndoManager.CanSave = true;
+                    }
+                    this.events.GetEvent<ShowTipEvent>().Publish(new ShowTipEventArgs() { enumTipKind = EnumTipKind.StatusSetPasswordSuccessfully, Unicode = unicode });
+                }
+            });
+        }
+
+        /// <summary>
+        /// 合并
+        /// </summary>
+        private void mergeFile()
+        {
+            DialogParameters value = new DialogParameters();
+            value.Add(ParameterNames.PDFViewer, PDFViewer);
+            dialogs.ShowDialog(DialogNames.MergeDialog, value, e => { });
+        }
+
+        /// <summary>
+        /// 压缩
+        /// </summary>
+        private void compress()
+        {
+            DialogParameters value = new DialogParameters();
+            value.Add(ParameterNames.PDFViewer, PDFViewer);
+            dialogs.ShowDialog(DialogNames.CompressDialog, value, e =>
+            {
+                CompressDialogModel compressDialogModel = new CompressDialogModel();
+                compressDialogModel.OnOpened((Prism.Services.Dialogs.DialogResult)e);
+            });
+        }
+
         /// <summary>
         /// 设置Tip状态栏的显示状态
         /// </summary>

+ 4 - 1
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialog.xaml

@@ -32,7 +32,7 @@
             <Setter Property="Template">
                 <Setter.Value>
                     <ControlTemplate TargetType="{x:Type RadioButton}">
-                        <Border x:Name="PrintModRdo" Background="Transparent"
+                        <Border x:Name="PrintModRdo" Background="{StaticResource color.btn.sec.bg.norm}"
                                 BorderBrush="{StaticResource color.btn.sec.border-color }"
                                 BorderThickness="1" 
                                 CornerRadius="4" 
@@ -42,6 +42,9 @@
                             </Grid>
                         </Border>
                         <ControlTemplate.Triggers>
+                            <Trigger Property="IsMouseOver" Value="True">
+                                <Setter Property="Background" TargetName="PrintModRdo" Value="{StaticResource color.btn.sec.bg.hov}"></Setter>
+                            </Trigger>
                             <Trigger Property="IsChecked" Value="False">
                                 <Setter Property="Background" TargetName="PrintModRdo" Value="{StaticResource color.btn.sec.bg.norm}"></Setter>
                             </Trigger>

+ 15 - 6
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDocumentContent.xaml

@@ -11,13 +11,18 @@
                 <Setter.Value>
                     <ControlTemplate TargetType="{x:Type Button}">
                         <Grid  x:Name="UserfulRegion">
-                            <Border BorderBrush="{StaticResource color.field.border.norm}" BorderThickness="1" CornerRadius="4" >
+                            <Border x:Name="border" BorderBrush="{StaticResource color.field.border.norm}" BorderThickness="1" CornerRadius="4" >
                                 <Grid>
                                     <Rectangle Width="24" Height="24" Fill="Transparent"></Rectangle>
                                     <Path x:Name="Path" Fill="{StaticResource color.icon.base.neutral.norm.lv1}" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M3.11071 4.24945L5.43035 1.9298L4.36969 0.869141L0.769719 4.46912C0.476825 4.76201 0.476826 5.23688 0.769719 5.52978L4.36969 9.12975L5.43035 8.06909L3.11071 5.74945H14.5V4.24945H3.11071Z"></Path>
                                 </Grid>
                             </Border>
                         </Grid>
+                        <ControlTemplate.Triggers>
+                            <Trigger Property="IsMouseOver" Value="True">
+                                <Setter Property="Background" TargetName="border" Value="{StaticResource color.item-state.hov.bg}"></Setter>
+                            </Trigger>
+                        </ControlTemplate.Triggers>
                     </ControlTemplate>
                 </Setter.Value>
             </Setter>
@@ -27,15 +32,19 @@
                 <Setter.Value>
                     <ControlTemplate TargetType="{x:Type Button}">
                         <Grid  x:Name="UserfulRegion">
-                            <Border BorderBrush="{StaticResource color.field.border.norm}" BorderThickness="1" CornerRadius="4" >
+                            <Border x:Name="border" BorderBrush="{StaticResource color.field.border.norm}" BorderThickness="1" CornerRadius="4" >
                                 <Grid>
-                                    
-                                <Rectangle Width="24" Height="24" Fill="Transparent"></Rectangle>
-                                <Path x:Name="Path" Fill="{StaticResource color.icon.base.neutral.norm.lv1}" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M11.8893 4.24992L0.5 4.24992V5.74992L11.8893 5.74992L9.56967 8.06958L10.6303 9.13024L14.2303 5.53026C14.5232 5.23737 14.5232 4.7625 14.2303 4.4696L10.6303 0.869629L9.56967 1.93029L11.8893 4.24992Z"></Path>
-                                </Grid>
 
+                                    <Rectangle Width="24" Height="24" Fill="Transparent"></Rectangle>
+                                    <Path x:Name="Path" Fill="{StaticResource color.icon.base.neutral.norm.lv1}" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M11.8893 4.24992L0.5 4.24992V5.74992L11.8893 5.74992L9.56967 8.06958L10.6303 9.13024L14.2303 5.53026C14.5232 5.23737 14.5232 4.7625 14.2303 4.4696L10.6303 0.869629L9.56967 1.93029L11.8893 4.24992Z"></Path>
+                                </Grid>
                             </Border>
                         </Grid>
+                        <ControlTemplate.Triggers>
+                            <Trigger Property="IsMouseOver" Value="True">
+                                <Setter Property="Background" TargetName="border" Value="{StaticResource color.item-state.hov.bg}"></Setter>
+                            </Trigger>
+                        </ControlTemplate.Triggers>
                     </ControlTemplate>
                 </Setter.Value>
             </Setter>

+ 39 - 6
PDF Office/Views/ViewContent.xaml

@@ -67,7 +67,7 @@
                             <Separator Margin="8,0" Style="{StaticResource HorizontalSeparatorStyle}" />
                             <MenuItem Header="Create Files" />
                             <MenuItem Header="New Tab" InputGestureText="Ctrl+T" />
-                            <MenuItem Header="Merge PDF Files" />
+                            <MenuItem Command="{Binding MergeFileCommand}" Header="Merge PDF Files" />
                             <Separator Margin="8,0" Style="{StaticResource HorizontalSeparatorStyle}" />
                             <MenuItem
                                 Command="{Binding SaveFile}"
@@ -78,14 +78,47 @@
                                 Header="Save As"
                                 InputGestureText="Ctrl+Shift+S" />
                             <MenuItem Command="{Binding SaveAsFlattenCommand}" Header="Save as Flattened PDF" />
-                            <MenuItem Header="Compress" />
-                            <MenuItem Header="Convert To" />
+                            <MenuItem Command="{Binding CompressCommand}" Header="Compress" />
+                            <MenuItem Header="Convert To">
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="Word"
+                                    Header="Word" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="Excel"
+                                    Header="Excel" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="PPT"
+                                    Header="PowerPoint" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="RTF"
+                                    Header="RTF" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="HTML"
+                                    Header="HTML" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="Text"
+                                    Header="Text" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="CSV"
+                                    Header="CSV" />
+                                <MenuItem
+                                    Command="{Binding ConvertCommand}"
+                                    CommandParameter="Image"
+                                    Header="图片" />
+                            </MenuItem>
                             <Separator Margin="8,0" Style="{StaticResource HorizontalSeparatorStyle}" />
                             <MenuItem Header="Close Window" InputGestureText="Ctrl+Shift+W" />
                             <MenuItem Header="Close Tab" InputGestureText="Ctrl+W" />
                             <Separator Margin="8,0" Style="{StaticResource HorizontalSeparatorStyle}" />
-                            <MenuItem Header="Set Passwords" />
-                            <MenuItem Header="Remove Security" />
+                            <MenuItem Command="{Binding EncryptCommand}" Header="Set Passwords" />
+                            <MenuItem Command="{Binding DecryptCommand}" Header="Remove Security" />
                             <Separator Margin="8,0" Style="{StaticResource HorizontalSeparatorStyle}" />
                             <MenuItem Command="{Binding ShowInFolderCommand}" Header="Show in Folder" />
                             <MenuItem Command="{Binding PropertyCommand}" Header="Properties" />
@@ -370,8 +403,8 @@
             <!--  阅读页顶部提示栏区域  -->
             <ContentControl
                 Grid.Column="2"
-                VerticalAlignment="Top"
                 Width="{Binding ElementName=PDFViewerContent, Path=Width}"
+                VerticalAlignment="Top"
                 prism:RegionManager.RegionName="{Binding TipContentRegionName}"
                 Visibility="{Binding TipVisible}" />
             <!--  阅读页顶部侧面提示区域  -->