using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Windows; using System.Windows.Controls; using System.Windows.Forms; using ComPDFKit.PDFDocument; namespace Compdfkit_Tools.PDFControl { public partial class EncryptionDialog : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public bool CanEncrypt => FileListControl.FileNum > 0 && SetEncryptionControl.ValidSetting; private CPDFDocument document; public EncryptionDialog() { InitializeComponent(); DataContext = this; FileListControl.FileNumChanged += (sender, args) => { OnPropertyChanged(nameof(CanEncrypt)); }; SetEncryptionControl.EncryptionSettingChanged += (sender, args) => { OnPropertyChanged(nameof(CanEncrypt)); }; } private void ButtonCancel_Click(object sender, RoutedEventArgs e) { this.Close(); } private void ButtonEncrypt_Click(object sender, RoutedEventArgs e) { var dialog = new FolderBrowserDialog(); dialog.ShowDialog(); var savePath = dialog.SelectedPath; var permissionsInfo = new CPDFPermissionsInfo(); if (!SetEncryptionControl.IsOwnerPasswordEnabled || string.IsNullOrEmpty(SetEncryptionControl.OwnerPassword)) { foreach (var fileInfoData in FileListControl.FileInfoDataList) { document = CPDFDocument.InitWithFilePath(fileInfoData.Location); document.Encrypt(SetEncryptionControl.UserPassword, null, permissionsInfo); document.WriteToFilePath(savePath + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(fileInfoData.FileName) + "_Encrypted.pdf"); } } else { permissionsInfo.AllowsPrinting = SetEncryptionControl.IsAllowPrint; permissionsInfo.AllowsCopying = SetEncryptionControl.IsAllowCopy; foreach (var fileInfoData in FileListControl.FileInfoDataList) { document = CPDFDocument.InitWithFilePath(fileInfoData.Location); document.Encrypt(SetEncryptionControl.UserPassword, SetEncryptionControl.OwnerPassword, permissionsInfo); document.WriteToFilePath(savePath + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(fileInfoData.FileName) + "_Encrypted.pdf"); } } } protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }