using ComPDFKitViewer.PdfViewer; using Microsoft.Office.Core; using PDF_Master.Helper; using PDF_Master.Model; using PDF_Master.Model.Dialog.ConverterDialogs; using PDF_Master.Model.Dialog.HomePageToolsDialogs.HomePageBatchProcessing; using PDF_Master.Model.Dialog.ToolsDialogs; using PDF_Master.Model.Dialog.ToolsDialogs.SaftyDialogs; using PDF_Master.Model.PDFTool; using PDF_Master.Views; using PDFSettings; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using static PDF_Master.Model.Dialog.ToolsDialogs.SaftyDialogs.DeleteSafetySettintgsModel; namespace PDF_Master.ViewModels.HomePanel.PDFTools { public class QuickToolsContentViewModel : BindableBase { #region 文案 private string T_title; public string T_Title { get { return T_title; } set { SetProperty(ref T_title, value); } } private void InitString() { T_Title = App.HomePageLoader.GetString("HomeTool_Title"); } #endregion #region 属性 /// /// 扩展/收缩 /// private bool _isExpendTools = false; public bool IsExpendTools { get { return _isExpendTools; } set { SetProperty(ref _isExpendTools, value); } } private string regionName; public string ToolRegionName { get { return regionName; } set { SetProperty(ref regionName, value); } } #endregion #region Command and Event public IDialogService dialogs; public DelegateCommand QuickToolsCommand { get; set; } public DelegateCommand OpenMenuCommand { get; set; } public DelegateCommand ExpendCommand { get; set; } public DelegateCommand ShowToolCommand { get; set; } public IRegionManager toolregion; public event EventHandler ExpendToolsHanlder; #endregion public QuickToolsContentViewModel(IDialogService dialogService, IRegionManager regionManager) { toolregion = regionManager; ToolRegionName = RegionNames.ToolRegionName; System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() => { toolregion.RequestNavigate(ToolRegionName, "Guid"); })); dialogs = dialogService; InitVariable(); InitCommand(); InitString(); } #region 初始化和绑定 private void InitVariable() { } private void InitCommand() { QuickToolsCommand = new DelegateCommand(QuickTools_Click); OpenMenuCommand = new DelegateCommand(OpenMenu); ExpendCommand = new DelegateCommand(Expend); ShowToolCommand = new DelegateCommand(ShowTool); } #endregion private void ShowTool() { toolregion.RequestNavigate(ToolRegionName, "Tools"); } public void QuickTools_Click(ToolItem toolItem) { /* *设置这个对话框的起始保存路径 */ System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog(); dlg.Multiselect = false; dlg.Filter = "PDF|*.pdf;*.PDF;"; if (toolItem.FnType == PDFFnType.Compress || toolItem.FnType == PDFFnType.Security|| toolItem.FnType ==PDFFnType.BatchRemove||toolItem.FnType==PDFFnType.ConvertPDF|| toolItem.FnType==PDFFnType.Background|| toolItem.FnType == PDFFnType.HeaderFooter|| toolItem.FnType == PDFFnType.BatesNumbers|| toolItem.FnType == PDFFnType.WaterMark|| toolItem.FnType == PDFFnType.PDFToExcel|| toolItem.FnType == PDFFnType.PDFToImage|| toolItem.FnType == PDFFnType.PDFToPPT|| toolItem.FnType == PDFFnType.Batch || toolItem.FnType == PDFFnType.Merge) { //dlg.Multiselect = true; } if (toolItem.FnType == PDFFnType.ImageToPDF) { dlg.Multiselect = true; dlg.Filter = "Picture|*.png;*.PNG;*.jpg;*.JPG;*bmp;*jpeg;*gif;*tiff;"; } if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { CPDFViewer viewer = new CPDFViewer(); switch ((PDFFnType)toolItem.FnType) { case PDFFnType.Split: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) {return;} DialogParameters splitvalue = new DialogParameters(); splitvalue.Add(ParameterNames.PDFViewer, viewer); splitvalue.Add(ParameterNames.FilePath, dlg.FileName); dialogs.ShowDialog(DialogNames.HomePageSplitDialog, splitvalue, e => { }); break; case PDFFnType.Extract: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) {return;} DialogParameters extractvalue = new DialogParameters(); extractvalue.Add(ParameterNames.PDFViewer, viewer); extractvalue.Add(ParameterNames.FilePath, dlg.FileName); dialogs.ShowDialog(DialogNames.HomePageExtractDialog, extractvalue, e => { }); break; case PDFFnType.Insert: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) {return;} DialogParameters insertvalue = new DialogParameters(); insertvalue.Add(ParameterNames.PDFViewer, viewer); insertvalue.Add(ParameterNames.FilePath, dlg.FileName); dialogs.ShowDialog(DialogNames.HomePageInsertDialog, insertvalue, e => { }); break; case PDFFnType.Compress: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) { return; } DialogParameters compresspdf = new DialogParameters(); compresspdf.Add(ParameterNames.PDFViewer, viewer); dialogs.ShowDialog(DialogNames.CompressDialog, compresspdf, e => { CompressDialogModel compressDialogModel = new CompressDialogModel(); compressDialogModel.OnOpened((Prism.Services.Dialogs.DialogResult)e); // OnOpened((Prism.Services.Dialogs.DialogResult)e); }); //批量 //DialogParameters compresspdf = new DialogParameters(); //compresspdf.Add(ParameterNames.BatchProcessing_Name, "1"); //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 1; //compresspdf.Add(ParameterNames.FilePath, dlg.FileNames); //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, compresspdf, e => { }); break; case PDFFnType.ImageToPDF: DialogParameters picturetopdf = new DialogParameters(); picturetopdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePagePictureToPDFDialog, picturetopdf, e => { }); break; case PDFFnType.Print: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) {return;} DialogParameters printvalue = new DialogParameters(); printvalue.Add(ParameterNames.PDFViewer, viewer); printvalue.Add(ParameterNames.FilePath, dlg.FileName); dialogs.ShowDialog(DialogNames.HomePagePrinterDialog, printvalue, e => { }); try { dialogs.ShowDialog("MainWindow"); } catch { } 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 => { }); CPDFViewer cPDFViewer = new CPDFViewer(); cPDFViewer.InitDocument(dlg.FileName); VerifyPasswordResult result = SecurityHelper.VerifyPasswordByPasswordKind(cPDFViewer.Document, EnumPasswordKind.StatusPermissionsPassword, dialogs); if (result.IsDiscryptied) { if (result.Password != null) { cPDFViewer.Document.UnlockWithPassword(result.Password); } ///TODO: ///此处填入需要执行的代码 /// DialogParameters param = new DialogParameters(); param.Add(ParameterNames.PDFViewer, cPDFViewer); dialogs.ShowDialog(DialogNames.SetPasswordDialog, param, e => { string FilePath; if (e.Parameters.TryGetValue("FilePath",out FilePath)) { CommonHelper.ShowFileBrowser(FilePath); } }); } break; case PDFFnType.ConvertPDF: //DialogParameters convertpdf = new DialogParameters(); //convertpdf.Add(ParameterNames.BatchProcessing_Name, "0"); //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0; //convertpdf.Add(ParameterNames.FilePath, dlg.FileNames); //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdf, e => { }); break; case PDFFnType.BatchRemove: DialogParameters batchremovepdf = new DialogParameters(); batchremovepdf.Add(ParameterNames.BatchProcessing_Name, "7"); HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); HomePageBatchProcessingDialogModel.BatchProcessingIndex = 7; batchremovepdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, batchremovepdf, e => { }); break; case PDFFnType.HeaderFooter: DialogParameters headerFooterpdf = new DialogParameters(); headerFooterpdf.Add(ParameterNames.BatchProcessing_Name, "5"); HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); HomePageBatchProcessingDialogModel.BatchProcessingIndex = 5; headerFooterpdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, headerFooterpdf, e => { }); break; case PDFFnType.BatesNumbers: DialogParameters batesNumberspdf = new DialogParameters(); batesNumberspdf.Add(ParameterNames.BatchProcessing_Name, "6"); HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); HomePageBatchProcessingDialogModel.BatchProcessingIndex = 6; batesNumberspdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, batesNumberspdf, e => { }); break; case PDFFnType.Background: DialogParameters backgroundpdf = new DialogParameters(); backgroundpdf.Add(ParameterNames.BatchProcessing_Name, "4"); HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); HomePageBatchProcessingDialogModel.BatchProcessingIndex = 4; backgroundpdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, backgroundpdf, e => { }); break; case PDFFnType.WaterMark: DialogParameters watermarkpdf = new DialogParameters(); watermarkpdf.Add(ParameterNames.BatchProcessing_Name, "3"); HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); HomePageBatchProcessingDialogModel.BatchProcessingIndex = 3; watermarkpdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, watermarkpdf, e => { }); break; case PDFFnType.PDFToImage: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) { return; } DialogParameters convertpdftoimage = new DialogParameters(); convertpdftoimage.Add("PageRangeComboBoxCurrentPage", true); convertpdftoimage.Add(ParameterNames.PDFViewer, viewer); dialogs.ShowDialog(DialogNames.ConverterImgDialog, convertpdftoimage, e => { ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel(); converterDialogsModel.OnOpened((DialogResult)e); }); //DialogParameters convertpdftoimage = new DialogParameters(); //convertpdftoimage.Add(ParameterNames.BatchProcessing_Name, "0"); //convertpdftoimage.Add("ConverterTypeIndex", 7); //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0; //convertpdftoimage.Add(ParameterNames.FilePath, dlg.FileNames); //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdftoimage, e => { }); break; case PDFFnType.PDFToExcel: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) { return; } DialogParameters convertpdftoexcel = new DialogParameters(); convertpdftoexcel.Add(ParameterNames.PDFViewer, viewer); convertpdftoexcel.Add("PageRangeComboBoxCurrentPage", true); dialogs.ShowDialog(DialogNames.ConverterExcelDialog, convertpdftoexcel, e => { ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel(); converterDialogsModel.OnOpened((DialogResult)e); }); //DialogParameters convertpdftoexcel = new DialogParameters(); //convertpdftoexcel.Add(ParameterNames.BatchProcessing_Name, "0"); //convertpdftoexcel.Add("ConverterTypeIndex", 1); //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0; //convertpdftoexcel.Add(ParameterNames.FilePath, dlg.FileNames); //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdftoexcel, e => { }); break; case PDFFnType.PDFToPPT: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) { return; } DialogParameters convertpdftoPPT = new DialogParameters(); convertpdftoPPT.Add(ParameterNames.PDFViewer, viewer); convertpdftoPPT.Add("PageRangeComboBoxCurrentPage", true); dialogs.ShowDialog(DialogNames.ConverterPPTDialog, convertpdftoPPT, e => { ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel(); converterDialogsModel.OnOpened((DialogResult)e); }); //批量处理 //DialogParameters convertpdftoppt = new DialogParameters(); //convertpdftoppt.Add(ParameterNames.BatchProcessing_Name, "0"); //convertpdftoppt.Add("ConverterTypeIndex", 2); //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0; //convertpdftoppt.Add(ParameterNames.FilePath, dlg.FileNames); //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdftoppt, e => { }); break; case PDFFnType.PDFToWord: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) { return; } DialogParameters convertpdftoword = new DialogParameters(); convertpdftoword.Add(ParameterNames.PDFViewer, viewer); convertpdftoword.Add("PageRangeComboBoxCurrentPage", true); dialogs.ShowDialog(DialogNames.ConverterWordDialog, convertpdftoword, e => { ConverterDialogsModel converterDialogsModel = new ConverterDialogsModel(); converterDialogsModel.OnOpened((DialogResult)e); }); //批量处理 //DialogParameters convertpdftoword = new DialogParameters(); //convertpdftoword.Add(ParameterNames.BatchProcessing_Name, "0"); //convertpdftoword.Add("ConverterTypeIndex", 0); //HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); //HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0; //convertpdftoword.Add(ParameterNames.FilePath, dlg.FileNames); //dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdftoword, e => { }); break; case PDFFnType.Batch: DialogParameters batcpdf = new DialogParameters(); batcpdf.Add(ParameterNames.BatchProcessing_Name, "0"); HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList(); HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0; batcpdf.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, batcpdf, e => { }); break; case PDFFnType.Merge: viewer.InitDocument(dlg.FileName); if (!CheckPassword(viewer)) { return; } DialogParameters merge = new DialogParameters(); merge.Add(ParameterNames.PDFViewer, viewer); merge.Add(ParameterNames.FilePath, dlg.FileNames); dialogs.ShowDialog(DialogNames.MergeDialog, merge, e => { }); break; } } } // // private bool CheckPassword(CPDFViewer viewer) { if (viewer.Document == null) { //MessageBoxEx.Show(App.MainPageLoader.GetString("Main_OpenFileFailedWarning")); return false; } if (viewer.Document.IsLocked) { VerifyPasswordResult result = SecurityHelper.VerifyPasswordByPasswordKind(viewer.Document, EnumPasswordKind.StatusOpenPassword, dialogs); if (result.IsDiscryptied) { if (result.Password != null) { string filePath = viewer.Document.FilePath; viewer.Document.UnlockWithPassword(result.Password); viewer.Tag = result.Password; } ///TODO: ///此处填入需要执行的代码 } if (result.IsDiscryptied == false) { //未成功解密文档时,释放Document对象,返回 viewer.Document.Release(); return false; } } return true; } private void Expend() { IsExpendTools = !IsExpendTools; ExpendToolsHanlder?.Invoke(null, IsExpendTools); } private void OpenMenu(object obj) { var menu = App.Current.FindResource("ExpendToolsContextMenu") as ContextMenu; var btn = obj as Button; if (menu != null && btn != null) { if(menu.Items.Count == 1) { var item = menu.Items[0] as MenuItem; if(_isExpendTools) { item.Header = "Collapse"; } else { item.Header = "Expand"; } item.Command = ExpendCommand; //btn.ContextMenu = menu; menu.PlacementTarget = btn; menu.IsOpen = true; } } } } }