Jelajahi Sumber

批量安全 - 改

liuaoran 2 tahun lalu
induk
melakukan
bbfcc4646c

+ 82 - 20
PDF Office/ViewModels/Dialog/ToolsDialogs/SaftyDialogs/SetPasswordDialogViewModel.cs

@@ -30,6 +30,7 @@ namespace PDF_Office.ViewModels.Dialog.ToolsDialogs.SaftyDialogs
         public IDialogService dialogs;
         private ViewContentViewModel viewContentViewModel;
         private EnumPermissionsMod enumPermissionsMod = EnumPermissionsMod.StatusUnknown | EnumPermissionsMod.StatusRestrictPrinting | EnumPermissionsMod.StatusRestrictCopying;
+        private bool haveViewModel = false;
 
         private bool _enableConfirm = false;
         public bool EnableConfirm
@@ -329,31 +330,85 @@ namespace PDF_Office.ViewModels.Dialog.ToolsDialogs.SaftyDialogs
 
         public void Encrypt()
         {
-            viewContentViewModel.SecurityInfo.IsPasswordChanged = true;
-            if (NeedOpenPassword && (!string.IsNullOrEmpty(OpenPassword)))
+            if (haveViewModel)
             {
-                this.viewContentViewModel.SecurityInfo.NeedOpenPassword = true;
-                this.viewContentViewModel.SecurityInfo.OpenPassword = OpenPassword;
-            }
-            else
-            {
-                this.viewContentViewModel.SecurityInfo.NeedOpenPassword = false;
-                viewContentViewModel.SecurityInfo.OpenPassword = null;
-            }
+                viewContentViewModel.SecurityInfo.IsPasswordChanged = true;
+                if (NeedOpenPassword && (!string.IsNullOrEmpty(OpenPassword)))
+                {
+                    this.viewContentViewModel.SecurityInfo.NeedOpenPassword = true;
+                    this.viewContentViewModel.SecurityInfo.OpenPassword = OpenPassword;
+                }
+                else
+                {
+                    this.viewContentViewModel.SecurityInfo.NeedOpenPassword = false;
+                    viewContentViewModel.SecurityInfo.OpenPassword = null;
+                }
 
-            if (NeedPermissionsPassword && (!string.IsNullOrEmpty(PermissionsPassword)))
-            {
-                this.viewContentViewModel.SecurityInfo.NeedPermissionsPassword = true;
-                viewContentViewModel.SecurityInfo.PermissionsPassword = PermissionsPassword;
-                viewContentViewModel.SecurityInfo.CPDFPermissionsInfo = CreatePermissionsInfo(enumPermissionsMod);
+                if (NeedPermissionsPassword && (!string.IsNullOrEmpty(PermissionsPassword)))
+                {
+                    this.viewContentViewModel.SecurityInfo.NeedPermissionsPassword = true;
+                    viewContentViewModel.SecurityInfo.PermissionsPassword = PermissionsPassword;
+                    viewContentViewModel.SecurityInfo.CPDFPermissionsInfo = CreatePermissionsInfo(enumPermissionsMod);
+                }
+                else
+                {
+                    this.viewContentViewModel.SecurityInfo.NeedPermissionsPassword = false;
+                    viewContentViewModel.SecurityInfo.PermissionsPassword = null;
+                    viewContentViewModel.SecurityInfo.CPDFPermissionsInfo = CreateDefaultPermissionsInfo();
+                }
+                RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.OK));
             }
             else
             {
-                this.viewContentViewModel.SecurityInfo.NeedPermissionsPassword = false;
-                viewContentViewModel.SecurityInfo.PermissionsPassword = null;
-                viewContentViewModel.SecurityInfo.CPDFPermissionsInfo = CreateDefaultPermissionsInfo();
+                string openPassword = "";
+                string permissionsPassword = "";
+
+                CPDFPermissionsInfo permissionsInfo = null;
+
+                if (NeedOpenPassword)
+                {
+                    if (!string.IsNullOrEmpty(OpenPassword))
+                    {
+                        openPassword = OpenPassword;
+                    }
+                }
+                if (NeedPermissionsPassword && (!string.IsNullOrEmpty(PermissionsPassword)))
+                {
+                    permissionsPassword = PermissionsPassword;
+                    permissionsInfo = CreatePermissionsInfo(enumPermissionsMod);
+                }
+                else
+                {
+                    permissionsInfo = CreateDefaultPermissionsInfo();
+                }
+
+                System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog();
+                /*
+                 *设置这个对话框的起始保存路径
+                 */
+                sfd.InitialDirectory = cPDFViewer.Document.FilePath;
+                /*
+                 *设置保存的文件的类型,注意过滤器的语法 例子:“文件类型|*.后缀名;*.后缀名;”
+                 */
+                sfd.Filter = "PDF|*.pdf;";
+                /*
+                 *调用ShowDialog()方法显示该对话框,该方法的返回值代表用户是否点击了确定按钮
+                 */
+                sfd.FileName = cPDFViewer.Document.FileName + "_EncryptedFile.pdf";
+                /*
+                 * 做一些工作
+                 */
+                if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+                {
+                    cPDFViewer.Document.Encrypt(openPassword, permissionsPassword, permissionsInfo);
+                    cPDFViewer.Document.WriteToFilePath(sfd.FileName);
+                    MessageBoxEx.Show("保存成功");
+                    RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.OK));
+                }
+                else
+                {
+                }
             }
-            RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.OK));
         }
 
         //public void Encrypt()
@@ -428,8 +483,15 @@ namespace PDF_Office.ViewModels.Dialog.ToolsDialogs.SaftyDialogs
 
         public void OnDialogOpened(IDialogParameters parameters)
         {
+            if (parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel))
+            {
+                haveViewModel = true;
+            }
+            else
+            {
+                haveViewModel = false;
+            }
             parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out cPDFViewer);
-            parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel);
         }
         #endregion
     }

+ 25 - 6
PDF Office/ViewModels/HomePanel/PDFTools/QuickToolsContentViewModel.cs

@@ -189,12 +189,31 @@ namespace PDF_Office.ViewModels.HomePanel.PDFTools
                         break;
 
                     case PDFFnType.Security:
-                        DialogParameters securitypdf = new DialogParameters();
-                        securitypdf.Add(ParameterNames.BatchProcessing_Name, "2");
-                        HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
-                        HomePageBatchProcessingDialogModel.BatchProcessingIndex = 2;
-                        securitypdf.Add(ParameterNames.FilePath, dlg.FileNames);
-                        dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, securitypdf, e => { });
+                        //DialogParameters securitypdf = new DialogParameters();
+                        //securitypdf.Add(ParameterNames.BatchProcessing_Name, "2");
+                        //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
+                        //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 2;
+                        //securitypdf.Add(ParameterNames.FilePath, dlg.FileNames);
+                        //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, securitypdf, e => { });
+                        CPDFViewer cPDFViewer = new CPDFViewer();
+                        cPDFViewer.InitDocument(dlg.FileName);
+                        VerifyPasswordResult result = SecurityHelper.VerifyPasswordByPasswordKind(cPDFViewer.Document, EnumPasswordKind.StatusPermissionsPassword, dialogs);
+                        if (result.IsDiscryptied)
+                        {
+                            if (result.Password != null)
+                            {
+                                string filePath = cPDFViewer.Document.FilePath;
+                                cPDFViewer.CloseDocument();
+                                cPDFViewer.InitDocument(filePath);
+                                cPDFViewer.Document.UnlockWithPassword(result.Password);
+                            }
+                            ///TODO:
+                            ///此处填入需要执行的代码
+                            ///
+                            DialogParameters param = new DialogParameters();
+                            param.Add(ParameterNames.PDFViewer, cPDFViewer);
+                            dialogs.ShowDialog(DialogNames.SetPasswordDialog, param, e => { });
+                        }
 
                         break;
                     case PDFFnType.ConvertPDF:

File diff ditekan karena terlalu besar
+ 1580 - 1580
PDF Office/ViewModels/ViewContentViewModel.cs