|
@@ -1,5 +1,6 @@
|
|
|
using ComPDFKit.PDFDocument;
|
|
|
using ComPDFKit.PDFPage;
|
|
|
+using ComPDFKit.PDFWatermark;
|
|
|
using ComPDFKitViewer.PdfViewer;
|
|
|
using PDF_Office.CustomControl;
|
|
|
using PDF_Office.EventAggregators;
|
|
@@ -16,11 +17,16 @@ using Prism.Regions;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Collections.ObjectModel;
|
|
|
+using System.Diagnostics;
|
|
|
+using System.Drawing;
|
|
|
+using System.Drawing.Printing;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Controls;
|
|
|
+using System.Windows.Media;
|
|
|
+using System.Windows.Media.Imaging;
|
|
|
|
|
|
namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
{
|
|
@@ -53,6 +59,13 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
set { SetProperty(ref _createTemplateVisible, value); }
|
|
|
}
|
|
|
|
|
|
+ private ImageSource _imageSource;
|
|
|
+ public ImageSource ImageSource {
|
|
|
+
|
|
|
+ get { return _imageSource; }
|
|
|
+ set { SetProperty(ref _imageSource, value); }
|
|
|
+ }
|
|
|
+
|
|
|
public DelegateCommand AddTemplateCommand { get; set; }
|
|
|
public DelegateCommand<object> DeleteTemplateItemCommand { get; set; }
|
|
|
public DelegateCommand<object> EditTemplateItemCommand { get; set; }
|
|
@@ -99,6 +112,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
if (Settings.Default.WatermarkTemplateList[temp].type == ComPDFKit.PDFWatermark.C_Watermark_Type.WATERMARK_TYPE_IMG)
|
|
|
{
|
|
|
watermarkModTextTemplateList.Add(Settings.Default.WatermarkTemplateList[temp]);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
WatermarkModFileCollection = new ObservableCollection<WatermarkItem>(watermarkModTextTemplateList);
|
|
@@ -198,7 +212,7 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
}
|
|
|
}
|
|
|
var listBox = e as ListBox;
|
|
|
- WatermarkItem WatermarkItem = listBox.SelectedItem as WatermarkItem;
|
|
|
+ WatermarkItem WatermarkItem = listBox.SelectedItem as WatermarkItem;
|
|
|
SendTemplateItemToDocument(WatermarkItem);
|
|
|
}
|
|
|
|
|
@@ -219,9 +233,10 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
EditToolsHelper.ChooseFile(watermarkItem.imagepath, ref WatermarkInfo);
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
+ else
|
|
|
+ {
|
|
|
watermarkInfo.WatermarkType = ComPDFKit.PDFWatermark.C_Watermark_Type.WATERMARK_TYPE_UNKWON;
|
|
|
- MessageBoxEx.Show("原路径为:"+ watermarkItem.imagepath+",该文件不存在");
|
|
|
+ MessageBoxEx.Show("原路径为:" + watermarkItem.imagepath + ",该文件不存在");
|
|
|
}
|
|
|
watermarkInfo.WatermarkHorizalign = watermarkItem.horizalign;
|
|
|
watermarkInfo.WatermarkVertalign = watermarkItem.vertalign;
|
|
@@ -260,6 +275,73 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
eventAggregator.GetEvent<SetWatermarkEvent>().Publish(WatermarkInfo);
|
|
|
}
|
|
|
|
|
|
+ public static BitmapSource ToBitmapSource(System.Drawing.Bitmap image)
|
|
|
+ {
|
|
|
+ IntPtr ptr = image.GetHbitmap();//obtain the Hbitmap
|
|
|
+ BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap
|
|
|
+ (
|
|
|
+ ptr,
|
|
|
+ IntPtr.Zero,
|
|
|
+ Int32Rect.Empty,
|
|
|
+ System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()
|
|
|
+ );
|
|
|
+ return bs;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public async Task RenderBitmap(WatermarkItem WatermarkItem)
|
|
|
+ {
|
|
|
+ CPDFDocument newDoc = CPDFDocument.CreateDocument();
|
|
|
+ newDoc.InsertPage(0, 595, 842, null);
|
|
|
+ WatermarkInfo watermarkInfo=new WatermarkInfo();
|
|
|
+ ConvertItemToInfo(WatermarkItem, ref watermarkInfo);
|
|
|
+ CreateWatermark(newDoc, watermarkInfo);
|
|
|
+ CPDFPage page = newDoc.PageAtIndex(0, true);
|
|
|
+
|
|
|
+ byte[] bmp_data = new byte[(int)page.PageSize.Width * (int)page.PageSize.Height * 4];
|
|
|
+ Bitmap bitmap = await ToolMethod.RenderPageBitmap(newDoc, (int)(page.PageSize.Width * 1.4), (int)(page.PageSize.Height * 1.4), 0, true, true);
|
|
|
+ ImageSource = ToBitmapSource(bitmap);
|
|
|
+ newDoc.ReleasePages();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void CreateWatermark(CPDFDocument document ,WatermarkInfo watermarkInfo)
|
|
|
+ {
|
|
|
+ if (watermarkInfo != null)
|
|
|
+ {
|
|
|
+ document.DeleteWatermarks();
|
|
|
+ CPDFWatermark watermark;
|
|
|
+ if (watermarkInfo.WatermarkType == C_Watermark_Type.WATERMARK_TYPE_TEXT)
|
|
|
+ {
|
|
|
+ watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
|
|
|
+ watermark.SetText(watermarkInfo.Text);
|
|
|
+ watermark.SetFontName(watermarkInfo.FontName);
|
|
|
+ watermark.SetFontSize(watermarkInfo.TextSize);
|
|
|
+ watermark.SetTextRGBColor(watermarkInfo.TextColor);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG);
|
|
|
+ if (watermarkInfo.ImageArray != null)
|
|
|
+ {
|
|
|
+ watermark.SetImage(watermarkInfo.ImageArray, watermarkInfo.ImageWidth, watermarkInfo.ImageHeight);
|
|
|
+ }
|
|
|
+ watermark.SetScale(0.1f);
|
|
|
+ }
|
|
|
+ watermark.SetRotation(watermarkInfo.Rotation);
|
|
|
+ watermark.SetOpacity(watermarkInfo.Opacity);
|
|
|
+ watermark.SetFront(watermarkInfo.IsFront);
|
|
|
+ watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
|
|
|
+ watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
|
|
|
+ watermark.SetFullScreen(watermarkInfo.Isfull);
|
|
|
+ watermark.SetVertOffset(watermarkInfo.VertOffset);
|
|
|
+ watermark.SetHorizOffset(watermarkInfo.HorizOffset);
|
|
|
+ watermark.SetHorizontalSpacing(watermarkInfo.HorizontalSpacing);
|
|
|
+ watermark.SetVerticalSpacing(watermarkInfo.VerticalSpacing);
|
|
|
+ watermark.SetPages("0");
|
|
|
+ Trace.WriteLine("IsCreateWatermark: " + watermark.CreateWatermark());
|
|
|
+ Trace.WriteLine("IsUpdateWatermark: " + watermark.UpdateWatermark());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
public bool IsNavigationTarget(NavigationContext navigationContext)
|