123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- using ComPDFKit.PDFDocument;
- using PDF_Office.Model.Dialog.ToolsDialogs;
- using PDF_Office.Model;
- using Prism.Commands;
- using Prism.Mvvm;
- using Prism.Services.Dialogs;
- using System;
- using System.Diagnostics;
- using System.Windows.Forms;
- using System.Windows;
- using DialogResult = Prism.Services.Dialogs.DialogResult;
- using MessageBox = System.Windows.Forms.MessageBox;
- using PDF_Office.Helper;
- using ComPDFKitViewer.PdfViewer;
- namespace PDF_Office.ViewModels.Dialog.ToolsDialogs.CompressDialogs
- {
- public class CompressDialogViewModel : BindableBase, IDialogAware
- {
- #region 参数和属性
- private CompressDialogModel compressDialogModel;
- private IntPtr compressingIntpr = IntPtr.Zero;
- private CPDFDocument document;
- private CPDFViewer pdfviewer;
- private Visibility _compressLargeStyle = Visibility.Hidden;
- public IDialogService dialogs;
- public Visibility CompressLargeStyle
- {
- get { return _compressLargeStyle; }
- set
- {
- SetProperty(ref _compressLargeStyle, value);
- }
- }
- private Visibility _compressStandardStyle = Visibility.Hidden;
- public Visibility CompressStandardStyle
- {
- get { return _compressStandardStyle; }
- set
- {
- SetProperty(ref _compressStandardStyle, value);
- }
- }
- private Visibility _compressLittleStyle = Visibility.Visible;
- public Visibility CompressLittleStyle
- {
- get { return _compressLittleStyle; }
- set
- {
- SetProperty(ref _compressLittleStyle, value);
- }
- }
- private Visibility _compressMicroStyle = Visibility.Hidden;
- public Visibility CompressMicroStyle
- {
- get { return _compressMicroStyle; }
- set
- {
- SetProperty(ref _compressMicroStyle, value);
- }
- }
- #endregion
- #region 委托声明
- public DelegateCommand LargeQualityCommand { get; set; }
- public DelegateCommand StandardQualityCommand { get; set; }
- public DelegateCommand LittleQualityCommand { get; set; }
- public DelegateCommand MicroQualityCommand { get; set; }
- public DelegateCommand CompressCommand { get; set; }
- public DelegateCommand ConfirmCompressCommand { get; set; }
- #endregion
- public CompressDialogViewModel(IDialogService dialogService)
- {
- LargeQualityCommand = new DelegateCommand(LargeQuality);
- StandardQualityCommand = new DelegateCommand(StandardQuality);
- LittleQualityCommand = new DelegateCommand(LittleQuality);
- MicroQualityCommand = new DelegateCommand(MicroQuality);
- CompressCommand = new DelegateCommand(Compress);
- ConfirmCompressCommand = new DelegateCommand(ConfirmCompress);
- dialogs = dialogService;
- }
- #region 逻辑函数
- private void LargeQuality()
- {
- compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusLarge;
- CompressLargeStyle = Visibility.Visible;
- CompressStandardStyle = Visibility.Hidden;
- CompressLittleStyle = Visibility.Hidden;
- CompressMicroStyle = Visibility.Hidden;
- }
- private void StandardQuality()
- {
- compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusStandard;
- CompressLargeStyle = Visibility.Hidden;
- CompressStandardStyle = Visibility.Visible;
- CompressLittleStyle = Visibility.Hidden;
- CompressMicroStyle = Visibility.Hidden;
- }
- private void LittleQuality()
- {
- compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusLittle;
- CompressLargeStyle = Visibility.Hidden;
- CompressStandardStyle = Visibility.Hidden;
- CompressLittleStyle = Visibility.Visible;
- CompressMicroStyle = Visibility.Hidden;
- }
- private void MicroQuality()
- {
- compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusMicro;
- CompressLargeStyle = Visibility.Hidden;
- CompressStandardStyle = Visibility.Hidden;
- CompressLittleStyle = Visibility.Hidden;
- CompressMicroStyle = Visibility.Visible;
- }
- private void ConfirmCompress()
- {
- RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
- }
- private int GetIndex(int pageindex)
- {
- Trace.WriteLine(pageindex);
- return 0;
- }
- private void Compress()
- {
- FolderBrowserDialog folderDialog = new FolderBrowserDialog();
- System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog();
- /*
- *设置这个对话框的起始保存路径
- */
- sfd.InitialDirectory = document.FilePath;
- /*
- *设置保存的文件的类型,注意过滤器的语法 例子:“文件类型|*.后缀名;*.后缀名;”
- */
- sfd.Filter = "PDF|*.pdf;";
- /*
- *调用ShowDialog()方法显示该对话框,该方法的返回值代表用户是否点击了确定按钮
- **/
- sfd.FileName = document.FileName + "_CompressFile.pdf";
- if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- /*
- * 做一些工作
- */
- Trace.WriteLine("compressDialogModel.CompressQuality: " + compressDialogModel.CompressQuality);
- DialogParameters value = new DialogParameters();
- value.Add(ParameterNames.PDFDocument, document);
- value.Add(ParameterNames.PassWord, pdfviewer.Tag);
- value.Add(ParameterNames.FilePath, sfd.FileName);
- value.Add("compressDialogModel.CompressQuality", (int)compressDialogModel.CompressQuality);
- RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
- dialogs.ShowDialog(DialogNames.CompressProgressBarDialog, value, e =>
- {
- });
- }
- else
- {
- MessageBox.Show("Cancel.");
- }
- }
- #endregion
- #region 框架行为
- public string Title => "";
- public event Action<IDialogResult> RequestClose;
- public bool CanCloseDialog()
- {
- return true;
- }
- public void OnDialogClosed()
- {
- }
- public void OnDialogOpened(IDialogParameters parameters)
- {
- parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfviewer);
- if (pdfviewer != null)
- {
- CompressDialogModel compressdialogmodel = new CompressDialogModel();
- document = pdfviewer.Document;
- compressDialogModel = compressdialogmodel;
- compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusDefault;
- }
- }
- #endregion
- }
- }
|