Browse Source

ComPDFKit.Demo(win) - 数字签名外观部分获取动态外观显示

liyuxuan 15 hours ago
parent
commit
1dd08fee3d

+ 33 - 14
Demo/Examples/Compdfkit.Controls/DigitalSignature/FillDigitalSignatureControl/FillDigitalSignatureControl.xaml.cs

@@ -116,7 +116,7 @@ namespace ComPDFKit.Controls.PDFControl
             tempSignatureConfig.IsDrawLogo = (bool)LogoChk.IsChecked;
             if (tempSignatureConfig.IsDrawLogo)
             {
-                if(!string.IsNullOrEmpty(logoPath))
+                if (!string.IsNullOrEmpty(logoPath))
                 {
                     byte[] imageData = null;
                     int imageWidth = 0;
@@ -139,7 +139,7 @@ namespace ComPDFKit.Controls.PDFControl
             tempSignatureConfig.TextColor = textColor;
             tempSignatureConfig.ContentColor = new float[] { 0, 0, 0 };
 
-            if(DynamicAP.IsChecked==true)
+            if (DynamicAP.IsChecked == true)
             {
                 tempSignatureWidget.UpdateSignApWithSignature(tempSignatureConfig);
             }
@@ -294,7 +294,7 @@ namespace ComPDFKit.Controls.PDFControl
         {
             int height = 0;
             int width = 0;
-            tempSignatureConfig.ImageData = GetDrawInk(ref height,ref width);
+            tempSignatureConfig.ImageData = GetDrawInk(ref height, ref width);
             tempSignatureConfig.ImageWidth = width;
             tempSignatureConfig.ImageHeight = height;
             CanvaDrawPopup.Visibility = Visibility.Collapsed;
@@ -382,7 +382,7 @@ namespace ComPDFKit.Controls.PDFControl
 
             return rgbValues;
         }
-        
+
         private void SetProperty()
         {
             Text = string.Empty;
@@ -433,7 +433,7 @@ namespace ComPDFKit.Controls.PDFControl
                 {
                     Text += "DN: ";
                 }
-                var keyOrder = new List<string> { "CN",  "O", "OU", "emailAddress", "L", "ST", "C" };
+                var keyOrder = new List<string> { "CN", "O", "OU", "emailAddress", "L", "ST", "C" };
 
                 var keyMapping = new Dictionary<string, string>
                 {
@@ -461,7 +461,7 @@ namespace ComPDFKit.Controls.PDFControl
                     }
                 }
 
-                 Text += stringBuilder.ToString()+"\n";
+                Text += stringBuilder.ToString() + "\n";
             }
 
             if ((bool)ComPDFKitVersionChk.IsChecked)
@@ -484,11 +484,6 @@ namespace ComPDFKit.Controls.PDFControl
                 }
                 Text += PositionTbx.Text + "\n";
             }
-
-            if(DynamicAP.IsChecked==true)
-            {
-
-            }
         }
 
         private void ReasonCheckBox_Click(object sender, RoutedEventArgs e)
@@ -531,9 +526,20 @@ namespace ComPDFKit.Controls.PDFControl
             }
         }
 
-        private void ClearTxt_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        private void ClearSignatureImage()
         {
             imagePath = string.Empty;
+            if (tempSignatureConfig != null)
+            {
+                tempSignatureConfig.ImageData = null;
+                tempSignatureConfig.ImageWidth = 0;
+                tempSignatureConfig.ImageHeight = 0;
+            }
+        }
+
+        private void ClearTxt_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            ClearSignatureImage();
             //tempSignatureConfig.ImageBitmap = null;
             SetProperty();
             CreateTempSignature();
@@ -574,6 +580,19 @@ namespace ComPDFKit.Controls.PDFControl
         private void DynamicAPChk_Click(object sender, RoutedEventArgs e)
         {
             ImageBorder.IsEnabled = DynamicAP.IsChecked == true ? false : true;
+            ImageBorder.Opacity = ImageBorder.IsEnabled ? 1 : 0.4;
+            ImagePickPanel.IsEnabled = DynamicAP.IsChecked == true ? false : true;
+            ImagePickPanel.Opacity = ImageBorder.IsEnabled ? 1 : 0.4;
+            LogoChk.IsEnabled= DynamicAP.IsChecked == true ? false : true;
+            LogoChk.Opacity = LogoChk.IsEnabled ? 1 : 0.4;
+            TrackpadBorder.IsEnabled = DynamicAP.IsChecked == true ? false : true;
+            TrackpadBorder.Opacity = ImageBorder.IsEnabled ? 1 : 0.4;
+
+            if (DynamicAP.IsChecked == true)
+            {
+                LogoChk.IsChecked = false;
+                ClearSignatureImage();
+            }
             SetProperty();
             CreateTempSignature();
         }
@@ -662,7 +681,7 @@ namespace ComPDFKit.Controls.PDFControl
             {
                 location = string.Empty;
             }
-
+            signatureWidget.UpdateFormAp();
             if (DynamicAP.IsChecked == true)
             {
                 signatureWidget.SetSignAP();
@@ -672,7 +691,7 @@ namespace ComPDFKit.Controls.PDFControl
             {
                 signatureWidget.UpdateApWithSignature(tempSignatureConfig);
             }
-
+            
             if (Document.WriteSignatureToFilePath(signatureWidget, filePath, SignaturePath, Password, location, reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone))
             {
                 signatureCertificate.AddToTrustedCertificates();

+ 24 - 10
Demo/Examples/Compdfkit.Controls/Printer/PrintHelper.cs

@@ -1,5 +1,9 @@
-using ComPDFKit.Import;
+using ComPDFKit.Controls.PDFControl;
+using ComPDFKit.DigitalSign;
+using ComPDFKit.Import;
 using ComPDFKit.PDFAnnotation;
+using ComPDFKit.PDFAnnotation.Form;
+using ComPDFKit.PDFDocument;
 using ComPDFKit.PDFPage;
 using System;
 using System.Collections.Generic;
@@ -334,11 +338,8 @@ namespace ComPDFKit.Controls.Printer
                     System.Drawing.Size pageSize = new System.Drawing.Size((int)cSize.width * widthDpiRatio, (int)cSize.height * heightDpiRatio);
 
                     byte[] bmpData = new byte[(int)(pageSize.Width * pageSize.Height * 4)];
-
-                    Bitmap bitmap = GetPageBitmapWithFormDynamicAP(page, widthDpiRatio,heightDpiRatio,new CRect(0, (int)pageSize.Height, (int)pageSize.Width,0), 0xFFFFFFFF,ref bmpData, printSettingsInfo.IsPrintAnnot ? 1 : 0, printSettingsInfo.IsPrintForm);
-                   // page.RenderPageBitmap(0, 0, pageSize.Width, pageSize.Height, 0xFFFFFFFF, bmpData, printSettingsInfo.IsPrintAnnot ? 1 : 0, printSettingsInfo.IsPrintForm);
-                   // Bitmap bitmap = BuildBmp((int)pageSize.Width, (int)pageSize.Height, bmpData);
-
+                    Bitmap bitmap = GetPageBitmapWithFormDynamicAP(printSettingsInfo.Document,page, widthDpiRatio,heightDpiRatio,new CRect(0, (int)pageSize.Height, (int)pageSize.Width,0), 0xFFFFFFFF,ref bmpData, printSettingsInfo.IsPrintAnnot ? 1 : 0, printSettingsInfo.IsPrintForm);
+                   
                     if (printSettingsInfo.IsGrayscale)
                     {
                         bitmap = ToGray(bitmap, 0);
@@ -567,9 +568,9 @@ namespace ComPDFKit.Controls.Printer
             return newBitmap;
         }
 
-        public static Bitmap GetPageBitmapWithFormDynamicAP(CPDFPage page,float scaleX,float scaleY, CRect rangeRect,uint bgColor, ref byte[] bmpData, int flag, bool form = false)
+        public static Bitmap GetPageBitmapWithFormDynamicAP(CPDFDocument pdfDoc, CPDFPage page,float scaleX,float scaleY, CRect rangeRect,uint bgColor, ref byte[] bmpData, int flag, bool form = false)
         {
-            if (page == null || page.IsValid() == false)
+            if (pdfDoc==null || pdfDoc.IsValid()==false || page == null || page.IsValid() == false)
             {
                 return null;
             }
@@ -629,8 +630,21 @@ namespace ComPDFKit.Controls.Printer
                 }
 
                 byte[] annotData = new byte[renderWidth * renderHeight * 4];
-                rawAnnot.RenderAnnot(renderWidth, renderHeight, annotData, CPDFAppearanceType.Normal);
-
+                CPDFWidget widgetAnnot = rawAnnot as CPDFWidget;
+                CPDFSignatureWidget signatureWidget = null;
+                if (widgetAnnot.WidgetType==C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS)
+                {
+                     signatureWidget = widgetAnnot as CPDFSignatureWidget;
+                }
+                if (signatureWidget != null && signatureWidget.IsSignAP())
+                {
+                    CPDFSignature signature = signatureWidget.GetSignature(pdfDoc);
+                    signatureWidget.GetSignatureAppearance(renderWidth, renderHeight, annotData, signature.GetSignState());
+                }
+                else
+                {
+                    rawAnnot.RenderAnnot(renderWidth, renderHeight, annotData, CPDFAppearanceType.Normal);
+                }
                 Bitmap annotBitmap = BuildBmp(renderWidth, renderHeight, annotData);
                 
                 if (page.Rotation != 0)

+ 1 - 4
Demo/Examples/Compdfkit.Controls/Printer/PrintPreviewControl.xaml.cs

@@ -322,12 +322,9 @@ namespace ComPDFKit.Controls.PDFControl
 
             if (page != null)
             {
-                Bitmap bitmap = PrintHelper.GetPageBitmapWithFormDynamicAP(page, 1, 1,pageRect, 0xFFFFFFFF, ref bmpData, printSettingsInfo.IsPrintAnnot ? 1 : 0, printSettingsInfo.IsPrintForm);
-                //page.RenderPageBitmapWithMatrix((float)1, pageRect, 0xFFFFFFFF, bmpData, printSettingsInfo.IsPrintAnnot ? 1 : 0, printSettingsInfo.IsPrintForm);
+                Bitmap bitmap = PrintHelper.GetPageBitmapWithFormDynamicAP(printSettingsInfo.Document,page, 1, 1,pageRect, 0xFFFFFFFF, ref bmpData, printSettingsInfo.IsPrintAnnot ? 1 : 0, printSettingsInfo.IsPrintForm);
                 Point startPoint = new Point(0, 0);
 
-                //Bitmap bitmap = PrintHelper.BuildBmp((int)pageRect.width(), (int)pageRect.height(), bmpData);
-
                 if (printSettingsInfo.IsGrayscale)
                 {
                     bitmap = PrintHelper.ToGray(bitmap, 0);