|
@@ -1,4 +1,10 @@
|
|
|
-using PDF_Office.EventAggregators;
|
|
|
+using ComPDFKit.PDFDocument;
|
|
|
+using ComPDFKit.PDFPage;
|
|
|
+using ComPDFKitViewer.PdfViewer;
|
|
|
+using PDF_Office.CustomControl;
|
|
|
+using PDF_Office.EventAggregators;
|
|
|
+using PDF_Office.Helper;
|
|
|
+using PDF_Office.Model;
|
|
|
using PDF_Office.Model.EditTools.Background;
|
|
|
using PDF_Office.Model.EditTools.Watermark;
|
|
|
using PDF_Office.Properties;
|
|
@@ -10,7 +16,9 @@ using Prism.Regions;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Collections.ObjectModel;
|
|
|
+using System.IO;
|
|
|
using System.Linq;
|
|
|
+using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Controls;
|
|
|
|
|
@@ -20,6 +28,8 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
{
|
|
|
private readonly IEventAggregator eventAggregator;
|
|
|
|
|
|
+ private CPDFViewer CurrentPDFViewer;
|
|
|
+
|
|
|
public WatermarkInfo WatermarkInfo = new WatermarkInfo();
|
|
|
public ObservableCollection<WatermarkItem> watermarkModFileCollection = new ObservableCollection<WatermarkItem>();
|
|
|
public ObservableCollection<WatermarkItem> WatermarkModFileCollection
|
|
@@ -51,6 +61,13 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
DeleteTemplateItemCommand = new DelegateCommand<object>(DeleteTemplateItem);
|
|
|
DeleteAllTemplateItemCommand = new DelegateCommand(DeleteAllTemplateItem);
|
|
|
SelectTemplateItemCommand = new DelegateCommand<object>(SelectTemplateItem);
|
|
|
+ eventAggregator.GetEvent<CurrentWatermarkPDFViewerEvent>().Subscribe(CurrentWatermarkPDFViewer);
|
|
|
+
|
|
|
+ }
|
|
|
+ public void CurrentWatermarkPDFViewer(CPDFViewer cPDFViewer)
|
|
|
+ {
|
|
|
+ CurrentPDFViewer = cPDFViewer;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void CheckTemplateListIsEmpty(List<WatermarkItem> watermarkTemplateList)
|
|
@@ -133,6 +150,19 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
|
|
|
public void SelectTemplateItem(object e)
|
|
|
{
|
|
|
+ AlertsMessage alertsMessage = new AlertsMessage();
|
|
|
+ if (CurrentPDFViewer.Document.GetWatermarkCount() > 0)
|
|
|
+ {
|
|
|
+ alertsMessage.ShowDialog("文件中已添加水印,您要替换现有的水印吗?", "", "取消", "确定");
|
|
|
+ if (alertsMessage.result == ContentResult.Ok)
|
|
|
+ {
|
|
|
+ this.eventAggregator.GetEvent<DeleteWatermarkEvent>().Publish(EnumDelete.StatusDeleteInitial);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this.eventAggregator.GetEvent<DeleteWatermarkEvent>().Publish(EnumDelete.StatusCreate);
|
|
|
+ }
|
|
|
+ }
|
|
|
var listBox = e as ListBox;
|
|
|
WatermarkItem WatermarkItem = listBox.SelectedItem as WatermarkItem;
|
|
|
SendTemplateItemToDocument(WatermarkItem);
|
|
@@ -143,9 +173,22 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
if (watermarkItem != null)
|
|
|
{
|
|
|
watermarkInfo.WatermarkType = watermarkItem.type;
|
|
|
- watermarkInfo.ImageWidth = watermarkItem.imageWidth;
|
|
|
- watermarkInfo.ImageHeight = watermarkItem.imageHeight;
|
|
|
- watermarkInfo.ImageArray = watermarkItem.imageArray;
|
|
|
+ FileInfo file = new FileInfo(watermarkItem.imagepath);
|
|
|
+ if (file.Exists)
|
|
|
+ {
|
|
|
+ if (file.Extension == ".pdf")
|
|
|
+ {
|
|
|
+ GetBitmapFromDocment(watermarkItem.imagepath);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ EditToolsHelper.ChooseFile(watermarkItem.imagepath, ref WatermarkInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ watermarkInfo.WatermarkType = ComPDFKit.PDFWatermark.C_Watermark_Type.WATERMARK_TYPE_UNKWON;
|
|
|
+ MessageBoxEx.Show("原路径为:"+ watermarkItem.imagepath+",该文件不存在");
|
|
|
+ }
|
|
|
watermarkInfo.WatermarkHorizalign = watermarkItem.horizalign;
|
|
|
watermarkInfo.WatermarkVertalign = watermarkItem.vertalign;
|
|
|
watermarkInfo.Isfull = watermarkItem.isFullScreen;
|
|
@@ -157,10 +200,26 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
watermarkInfo.HorizOffset = watermarkItem.horizOffset;
|
|
|
watermarkInfo.VerticalSpacing = watermarkItem.verticalSpacing;
|
|
|
watermarkInfo.HorizontalSpacing = watermarkItem.horizontalSpacing;
|
|
|
- watermarkInfo.PageRange = watermarkItem.pageRange;
|
|
|
+ EditToolsHelper.GetPageRange(watermarkItem.pageRangeIndex, CurrentPDFViewer.Document, ref WatermarkInfo.PageRange, watermarkItem.pageRange);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public async void GetBitmapFromDocment(string filePath)
|
|
|
+ {
|
|
|
+ CPDFDocument document = CPDFDocument.InitWithFilePath(filePath);
|
|
|
+ CPDFPage page = document.PageAtIndex(0);
|
|
|
+ byte[] bmp_data = new byte[(int)page.PageSize.Width * (int)page.PageSize.Height * 4];
|
|
|
+ await Task.Run(delegate
|
|
|
+ {
|
|
|
+ page.RenderPageBitmap(0, 0, (int)page.PageSize.Width, (int)page.PageSize.Height, 0xffffffff, bmp_data, 1);
|
|
|
+ });
|
|
|
+ WatermarkInfo.ImageArray = bmp_data;
|
|
|
+ WatermarkInfo.ImageWidth = (int)page.PageSize.Width;
|
|
|
+ WatermarkInfo.ImageHeight = (int)page.PageSize.Height;
|
|
|
+ document.ReleasePages();
|
|
|
+ document.Release();
|
|
|
+ }
|
|
|
+
|
|
|
public void SendTemplateItemToDocument(WatermarkItem WatermarkItem)
|
|
|
{
|
|
|
ConvertItemToInfo(WatermarkItem, ref WatermarkInfo);
|