using ComPDFKit.PDFDocument; using PDF_Office.Model; using PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs.DeleteSafetySettintgsModel; namespace PDF_Office.Helper { public class SecurityHelper { public static bool CheckHaveAllPermissions(CPDFDocument document) { CPDFPermissionsInfo permissionsInfo = document.GetPermissionsInfo(); if (permissionsInfo.AllowsDocumentChanges && permissionsInfo.AllowsPrinting && permissionsInfo.AllowsHighQualityPrinting && permissionsInfo.AllowsCopying && permissionsInfo.AllowsDocumentAssembly && permissionsInfo.AllowsFormFieldEntry && permissionsInfo.AllowsCommenting) { return true; } else { return false; } } public static bool CheckHaveSelectedPermissions(CPDFDocument document, EnumPermissionsSet enumPermissionsSet) { CPDFPermissionsInfo permissionsInfo = document.GetPermissionsInfo(); ///如果需求这个权限 if(((enumPermissionsSet & EnumPermissionsSet.StatusAllowsDocumentChanges) == EnumPermissionsSet.StatusAllowsDocumentChanges ) && (!permissionsInfo.AllowsDocumentChanges)) { return false; } if(((enumPermissionsSet& EnumPermissionsSet.StatusAllowsPrinting) == EnumPermissionsSet.StatusAllowsPrinting) && (!permissionsInfo.AllowsPrinting)) { return false; } if(((enumPermissionsSet&EnumPermissionsSet.StatusAllowsHighQualityPrinting) == EnumPermissionsSet.StatusAllowsHighQualityPrinting) && (!permissionsInfo.AllowsHighQualityPrinting)) { return false; } if (((enumPermissionsSet&EnumPermissionsSet.StatusAllowsCopying) == EnumPermissionsSet.StatusAllowsCopying)&& (!permissionsInfo.AllowsCopying)) { return false; } if (((enumPermissionsSet&EnumPermissionsSet.StatusAllowsDocumentAssembly) == EnumPermissionsSet.StatusAllowsDocumentAssembly) && (!permissionsInfo.AllowsDocumentAssembly)) { return false; } if(((enumPermissionsSet&EnumPermissionsSet.StatusAllowsFormFieldEntry) == EnumPermissionsSet.StatusAllowsFormFieldEntry) && (!permissionsInfo.AllowsDocumentAssembly)) { return false; } if (((enumPermissionsSet&EnumPermissionsSet.StatusAllowsCommenting) == EnumPermissionsSet.StatusAllowsCommenting) && (!permissionsInfo.AllowsCommenting)) { return false; } return true; } public static bool VerifyPasswordOnlyBool(CPDFDocument document ,EnumPasswordKind enumPasswordKind, IDialogService dialogService) { if (enumPasswordKind == EnumPasswordKind.StatusOpenPassword) { if (!document.IsLocked) { return true; } } else if(enumPasswordKind == EnumPasswordKind.StatusPermissionsPassword) { if (!document.IsLocked) { if (CheckHaveAllPermissions(document)) { return true; } } } string password = ""; DialogParameters value = new DialogParameters(); value.Add(ParameterNames.PasswordKind, EnumPasswordKind.StatusPermissionsPassword); value.Add(ParameterNames.PDFDocument, document); bool isDiscryptied = false; dialogService.ShowDialog(DialogNames.CheckPasswordDialog, value, e => { isDiscryptied = e.Parameters.GetValue(ParameterNames.PasswordResult); password = e.Parameters.GetValue(ParameterNames.Password); }); return isDiscryptied; } public static VerifyPasswordResult VerifyPasswordByPasswordKind(CPDFDocument document, EnumPasswordKind enumPasswordKind, IDialogService dialogService) { VerifyPasswordResult verifyPasswordResult = new VerifyPasswordResult(); if ((!document.IsLocked)&& ((enumPasswordKind == EnumPasswordKind.StatusOpenPassword)|| (enumPasswordKind == EnumPasswordKind.StatusPermissionsPassword)&& CheckHaveAllPermissions(document))) { verifyPasswordResult.IsDiscryptied = true; verifyPasswordResult.Password = null; return verifyPasswordResult; } DialogParameters value = new DialogParameters(); value.Add(ParameterNames.PasswordKind, EnumPasswordKind.StatusPermissionsPassword); value.Add(ParameterNames.PDFDocument, document); dialogService.ShowDialog(DialogNames.CheckPasswordDialog, value, e => { verifyPasswordResult.IsDiscryptied = e.Parameters.GetValue(ParameterNames.PasswordResult); verifyPasswordResult.Password = e.Parameters.GetValue(ParameterNames.Password); }); return verifyPasswordResult; } public static VerifyPasswordResult VerifyPasswordForSelectedPermissions(CPDFDocument document, EnumPermissionsSet enumPermissionsSet, IDialogService dialogService) { VerifyPasswordResult verifyPasswordResult = new VerifyPasswordResult(); if ((!document.IsLocked) &&CheckHaveSelectedPermissions(document, enumPermissionsSet)) { verifyPasswordResult.IsDiscryptied = true; verifyPasswordResult.Password = null; return verifyPasswordResult; } DialogParameters value = new DialogParameters(); if (enumPermissionsSet == EnumPermissionsSet.None) { value.Add(ParameterNames.PasswordKind, EnumPasswordKind.StatusOpenPassword); } else { value.Add(ParameterNames.PasswordKind, EnumPasswordKind.StatusPermissionsPassword); } value.Add(ParameterNames.PDFDocument, document); dialogService.ShowDialog(DialogNames.CheckPasswordDialog, value, e => { verifyPasswordResult.IsDiscryptied = e.Parameters.GetValue(ParameterNames.PasswordResult); verifyPasswordResult.Password = e.Parameters.GetValue(ParameterNames.Password); }); return verifyPasswordResult; } } public class VerifyPasswordResult { public bool IsDiscryptied; public string Password; } }