using ComPDFKit.PDFWatermark; using ComPDFKitViewer.PdfViewer; using PDF_Master.Helper; using PDF_Master.Model; using PDF_Master.Model.EditTools.Watermark; using PDF_Master.Properties; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media.Imaging; using System.Windows.Resources; namespace PDF_Master.ViewModels.Dialog.ServiceDialog { public class SubscriptionDialogViewModel : BindableBase, IDialogAware { public string Title => ""; private WatermarkInfo watermarkInfo; private CPDFWatermark watermark; private ViewContentViewModel viewContentViewModel; public event Action RequestClose; #region 文案 #endregion /// /// 价格优惠bord /// private Visibility _Vishalfprice = Visibility.Visible; public Visibility Vishalfprice { get { return _Vishalfprice; } set { SetProperty(ref _Vishalfprice, value); } } /// /// 价格优惠 /// private string _Textprice = "$39.99/year"; public string Textprice { get { return _Textprice; } set { SetProperty(ref _Textprice, value); } } private string _uristore = "https://www.pdfreaderpro.com/windows/store/permanent"; public string Uristore { get { return _uristore; } set { SetProperty(ref _uristore, value); } } public DelegateCommand LinkstoreCommand { get; set; } public DelegateCommand WarermarkSavingCommand { get; set; } public DelegateCommand RefreshCommand { get; set; } private void InitString() { } public SubscriptionDialogViewModel(IRegionManager regionManager, IDialogService dialogService) { RefreshCommand = new DelegateCommand(Refresh); LinkstoreCommand = new DelegateCommand(Linkstore); WarermarkSavingCommand = new DelegateCommand(WarermarkSaving); InitString(); if (Settings.Default.UserDate.subscribestatus == 2) { Textprice = "$79.99/year"; Vishalfprice = Visibility.Collapsed; } else { Textprice = "$39.99/year"; Vishalfprice = Visibility.Visible; } } private void Linkstore() { Process.Start(new ProcessStartInfo(Uristore)); } /// /// 水印保存 /// private void WarermarkSaving() { CPDFViewer cPDFViewer = new CPDFViewer(); Uri resourceUri = new Uri("pack://application:,,,/PDF Master;component/Resources/Service/Warermark.png"); StreamResourceInfo resourceInfo = Application.GetResourceStream(resourceUri); if (resourceInfo != null) { using (Stream stream = resourceInfo.Stream) { cPDFViewer = viewContentViewModel.PDFViewer; BitmapFrame frame = null; int width = 0; int height = 0; BitmapDecoder decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.Default); if (decoder != null && decoder.Frames.Count > 0) { frame = decoder.Frames[0]; } if (frame != null) { var ImageArray = new byte[frame.PixelWidth * frame.PixelHeight * 4]; width = frame.PixelWidth; height = frame.PixelHeight; frame.CopyPixels(ImageArray, frame.PixelWidth * 4, 0); watermark = cPDFViewer.Document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG); watermark.SetImage(ImageArray, width, height); watermark.SetScale(1); watermark.SetRotation(0); watermark.SetOpacity(255); watermark.SetFront(true); watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_TOP); watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_LEFT); watermark.SetFullScreen(false); watermark.SetVertOffset(0); watermark.SetHorizOffset(0); watermark.SetHorizontalSpacing(0); watermark.SetVerticalSpacing(0); string setpages = $"0-{cPDFViewer.Document.PageCount.ToString()}"; watermark.SetPages(setpages); watermark.UpdateWatermark(); cPDFViewer.Document.ReleasePages(); cPDFViewer.ReloadDocument(); viewContentViewModel.saveAsFile(null,cPDFViewer); Close(); } } } } /// /// 刷新订阅状态按钮 /// private void Refresh() { if (Settings.Default.AppProperties.LoginToken != "") { if (ServiceHelper.GetUser() == "401") { App.mainWindowViewModel.UserVis = Visibility.Collapsed; App.mainWindowViewModel.LoginVis = Visibility.Visible; App.mainWindowViewModel.OphVis = Visibility.Visible; if (Settings.Default.UserDate.IsLoginoff == false) { App.mainWindowViewModel.OpenLoginoff(); Settings.Default.UserDate.IsLoginoff = true; Settings.Default.Save(); } } } else { App.mainWindowViewModel.UserVis = Visibility.Collapsed; App.mainWindowViewModel.LoginVis = Visibility.Visible; App.mainWindowViewModel.OphVis = Visibility.Visible; } if (Settings.Default.UserDate.subscribestatus == 1&&App.IsLogin == true) { Close(); } } public void Close() { RequestClose?.Invoke(new Prism.Services.Dialogs.DialogResult(ButtonResult.Cancel)); } public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { parameters.TryGetValue(ParameterNames.ViewContentViewModel, out viewContentViewModel); } } }