|
@@ -2,6 +2,8 @@
|
|
|
using Microsoft.Win32;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Drawing.Imaging;
|
|
|
+using System.Drawing;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
@@ -14,6 +16,11 @@ using System.Windows.Input;
|
|
|
using System.Windows.Media;
|
|
|
using System.Windows.Media.Imaging;
|
|
|
using System.Windows.Shapes;
|
|
|
+using System.Globalization;
|
|
|
+using System.Reflection;
|
|
|
+using ComPDFKitViewer.AnnotEvent;
|
|
|
+using System.Windows.Ink;
|
|
|
+using ComPDFKitViewer;
|
|
|
|
|
|
namespace compdfkit_tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
|
|
|
{
|
|
@@ -25,7 +32,10 @@ namespace compdfkit_tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
|
|
|
public CPDFSignatureData cPDFSignatureData;
|
|
|
private string SaveToPath;
|
|
|
private string SignaturePath;
|
|
|
- private bool IsLoaded = false;
|
|
|
+ private string DrawingSaveToPath;
|
|
|
+ private const double StrokeWidth = 3;
|
|
|
+ private const double StrokeHigh = 3;
|
|
|
+ private bool IsPageLoaded = false;
|
|
|
public CreateSignatureDialog()
|
|
|
{
|
|
|
InitializeComponent();
|
|
@@ -36,9 +46,9 @@ namespace compdfkit_tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
|
|
|
SignaturePath = System.IO.Path.Combine(Environment.CurrentDirectory, "ComPDFKit");
|
|
|
SignaturePath = System.IO.Path.Combine(SignaturePath, "Signature");
|
|
|
System.IO.DirectoryInfo directoryInfo = System.IO.Directory.CreateDirectory(SignaturePath);
|
|
|
- IsLoaded = true;
|
|
|
- DrawinkCanvas.DefaultDrawingAttributes.Width = 3;
|
|
|
- DrawinkCanvas.DefaultDrawingAttributes.Height = 3;
|
|
|
+ IsPageLoaded = true;
|
|
|
+ DrawinkCanvas.DefaultDrawingAttributes.Width = StrokeWidth;
|
|
|
+ DrawinkCanvas.DefaultDrawingAttributes.Height = StrokeHigh;
|
|
|
}
|
|
|
|
|
|
private void Cancel_Click(object sender, RoutedEventArgs e)
|
|
@@ -48,7 +58,21 @@ namespace compdfkit_tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
|
|
|
|
|
|
private void Save_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
-
|
|
|
+ switch (CreateSignatureControl.SelectedIndex)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ SaveDrawSignature();
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ SaveTextSignature();
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ SaveImageSignature();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ this.Close();
|
|
|
}
|
|
|
|
|
|
private void Clear_Click(object sender, RoutedEventArgs e)
|
|
@@ -109,22 +133,138 @@ namespace compdfkit_tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI
|
|
|
SaveToPath = "";
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
private void ColorPickerControl_ColorChanged(object sender, EventArgs e)
|
|
|
{
|
|
|
- if (IsLoaded)
|
|
|
+ if (IsPageLoaded)
|
|
|
{
|
|
|
- DrawinkCanvas.DefaultDrawingAttributes.Color = ((SolidColorBrush)ColorPickerControl.Brush).Color;
|
|
|
+ DrawinkCanvas.DefaultDrawingAttributes.Color = ((SolidColorBrush)ColorPickerControl.Brush).Color;
|
|
|
UpDataToStrokesObject();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void TextColorPickerControl_ColorChanged(object sender, EventArgs e)
|
|
|
{
|
|
|
- if (IsLoaded)
|
|
|
+ if (IsPageLoaded)
|
|
|
+ {
|
|
|
+ InPutTextBox.Foreground = TextColorPickerControl.Brush;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ private void SaveTextSignature()
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(InPutTextBox.Text))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ System.Windows.Media.Brush fontcolor = new SolidColorBrush((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#252629"));
|
|
|
+ fontcolor=TextColorPickerControl.Brush;
|
|
|
+
|
|
|
+ Bitmap bmp = TextToBitmap(InPutTextBox.Text, "Arial", 50, System.Drawing.Rectangle.Empty, fontcolor, System.Drawing.Color.Transparent);
|
|
|
+ string guid = Guid.NewGuid().ToString();
|
|
|
+ string path = System.IO.Path.Combine(SignaturePath, guid);
|
|
|
+ bmp.Save(path, ImageFormat.Png);
|
|
|
+ SaveToPath = path;
|
|
|
+
|
|
|
+ cPDFSignatureData = new CPDFSignatureData();
|
|
|
+ cPDFSignatureData.SourcePath = SaveToPath;
|
|
|
+ cPDFSignatureData.AnnotationType = AnnotationType.Signature;
|
|
|
+ cPDFSignatureData.Type = SignatureType.TextType;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void SaveImageSignature()
|
|
|
+ {
|
|
|
+ cPDFSignatureData = new CPDFSignatureData();
|
|
|
+ cPDFSignatureData.SourcePath = SaveToPath;
|
|
|
+ cPDFSignatureData.AnnotationType = AnnotationType.Signature;
|
|
|
+ cPDFSignatureData.Type = SignatureType.ImageType;
|
|
|
+ }
|
|
|
+ private void SaveDrawSignature()
|
|
|
+ {
|
|
|
+ var FreeHandpath = SignaturePath;
|
|
|
+ string name = Guid.NewGuid().ToString();
|
|
|
+ FreeHandpath = System.IO.Path.Combine(FreeHandpath, name);
|
|
|
+ using (System.IO.FileStream stream = new System.IO.FileStream(FreeHandpath, System.IO.FileMode.Create))
|
|
|
+ {
|
|
|
+ DrawinkCanvas.Strokes.Save(stream);
|
|
|
+ }
|
|
|
+
|
|
|
+ StampAnnotArgs stampArgs = new StampAnnotArgs();
|
|
|
+
|
|
|
+ List<List<System.Windows.Point>> RawPointList = new List<List<System.Windows.Point>>();
|
|
|
+ for (int kk = 0; kk < DrawinkCanvas.Strokes.Count; kk++)
|
|
|
{
|
|
|
- InPutTextBox.Foreground= TextColorPickerControl.Brush;
|
|
|
+ List<System.Windows.Point> p = new List<System.Windows.Point>();
|
|
|
+ RawPointList.Add(p);
|
|
|
+ for (int gg = 0; gg < DrawinkCanvas.Strokes[kk].StylusPoints.Count; gg++)
|
|
|
+ {
|
|
|
+ var point = DrawinkCanvas.Strokes[kk].StylusPoints[gg].ToPoint();
|
|
|
+
|
|
|
+ if (point.X >= 0 && point.Y >= 0)
|
|
|
+ RawPointList[kk].Add(point);
|
|
|
|
|
|
+ }
|
|
|
}
|
|
|
+ DrawingSaveToPath = FreeHandpath;
|
|
|
+
|
|
|
+ //根据当前选项创建预览图片
|
|
|
+ double inkThickness;
|
|
|
+ inkThickness = StrokeWidth;
|
|
|
+ stampArgs.SetInkData(RawPointList, inkThickness, DrawinkCanvas.DefaultDrawingAttributes.Color);
|
|
|
+ var writeStamp = stampArgs.GetStampDrawing();
|
|
|
+
|
|
|
+ FreeHandpath = SignaturePath;
|
|
|
+ string thumbnailName = Guid.NewGuid().ToString();
|
|
|
+ FreeHandpath = System.IO.Path.Combine(FreeHandpath, thumbnailName);
|
|
|
+ using (FileStream stream5 = new FileStream(FreeHandpath, FileMode.Create))
|
|
|
+ {
|
|
|
+ PngBitmapEncoder encoder5 = new PngBitmapEncoder();
|
|
|
+ encoder5.Frames.Add(BitmapFrame.Create(writeStamp));
|
|
|
+ encoder5.Save(stream5);
|
|
|
+ }
|
|
|
+ SaveToPath = FreeHandpath;
|
|
|
+
|
|
|
+ cPDFSignatureData =new CPDFSignatureData();
|
|
|
+ cPDFSignatureData.AnnotationType = AnnotationType.Signature;
|
|
|
+ cPDFSignatureData.SourcePath = SaveToPath;
|
|
|
+ cPDFSignatureData.DrawingPath = DrawingSaveToPath;
|
|
|
+ cPDFSignatureData.Type = SignatureType.Drawing;
|
|
|
+ cPDFSignatureData.inkThickness = inkThickness;
|
|
|
+ cPDFSignatureData.inkColor = DrawinkCanvas.DefaultDrawingAttributes.Color;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Bitmap TextToBitmap(string text, string FontFamily, double size, System.Drawing.Rectangle rect, System.Windows.Media.Brush fontcolor, System.Drawing.Color backColor)
|
|
|
+ {
|
|
|
+ FormattedText formatText = new FormattedText(
|
|
|
+ text,
|
|
|
+ CultureInfo.CurrentCulture,
|
|
|
+ FlowDirection.LeftToRight,
|
|
|
+ new Typeface(new System.Windows.Media.FontFamily(FontFamily), FontStyles.Normal, FontWeights.Normal, FontStretches.Normal),
|
|
|
+ size,
|
|
|
+ fontcolor
|
|
|
+ );
|
|
|
+
|
|
|
+ DrawingVisual drawingVisual = new DrawingVisual();
|
|
|
+ DrawingContext dc = drawingVisual.RenderOpen();
|
|
|
+ dc.DrawText(formatText, new System.Windows.Point(2, 10));
|
|
|
+ dc.Close();
|
|
|
+
|
|
|
+
|
|
|
+ Rect x = drawingVisual.ContentBounds;
|
|
|
+ Rect DrawRect = new Rect(0, 0, x.Width + (x.X / 2), x.Height + x.Y);
|
|
|
+
|
|
|
+ RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap((int)((int)DrawRect.Width + (x.X / 2)), (int)((int)DrawRect.Height + x.Y), 96F, 96F, PixelFormats.Pbgra32);
|
|
|
+ renderTargetBitmap.Render(drawingVisual);
|
|
|
+
|
|
|
+ MemoryStream stream = new MemoryStream();
|
|
|
+ BitmapEncoder encoder = new PngBitmapEncoder();
|
|
|
+
|
|
|
+ encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
|
|
|
+ encoder.Save(stream);
|
|
|
+
|
|
|
+ Bitmap bitmap = new Bitmap(stream);
|
|
|
+
|
|
|
+ return bitmap;
|
|
|
}
|
|
|
}
|
|
|
}
|