Browse Source

compdfkit(win) - 添加签名时反馈信息

weixiangjie 1 year ago
parent
commit
8dd787bebe

+ 7 - 0
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCertificationDialog.xaml.cs

@@ -37,6 +37,8 @@ namespace Compdfkit_Tools.PDFControl
         {
             addCertificationControl.ContinueEvent -= ContinueEvent;
             addCertificationControl.ContinueEvent += ContinueEvent;
+            addCertificationControl.CancelEvent -= CloseEvent;
+            addCertificationControl.CancelEvent += CloseEvent;
         }
 
         private void ContinueEvent(object sender, CreateCertificationMode e)
@@ -94,5 +96,10 @@ namespace Compdfkit_Tools.PDFControl
             addCertificationControl.ContinueEvent -= ContinueEvent;
             addCertificationControl.ContinueEvent += ContinueEvent;
         }
+
+        private void CloseEvent(object sender, EventArgs e)
+        {
+            Close();
+        }
     }
 }

+ 13 - 5
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCustomCertificationControl.xaml

@@ -6,7 +6,7 @@
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
               xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
-             Height="340" Width="403">
+             Height="350" Width="403">
     <UserControl.Resources>
         <cpdfcommon:TextLengthToVisibilityConverter x:Key="TextLengthToVisibilityConverter"></cpdfcommon:TextLengthToVisibilityConverter>
         <cpdfcommon:BoolToCollapsedConverter x:Key="BoolToCollapsedConverter"></cpdfcommon:BoolToCollapsedConverter>
@@ -15,6 +15,7 @@
         <Grid.RowDefinitions>
             <RowDefinition Height="280"></RowDefinition>
             <RowDefinition></RowDefinition>
+            <RowDefinition></RowDefinition>
         </Grid.RowDefinitions>
         <Grid Background="#ffffff"  Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
             <TextBlock Text="Signature Information" FontWeight="Bold" FontSize="16"></TextBlock>
@@ -34,7 +35,10 @@
                     <ColumnDefinition Width="*"></ColumnDefinition>
                     <ColumnDefinition Width="2*"></ColumnDefinition>
                 </Grid.ColumnDefinitions>
-                <TextBlock Text="Grantor Name" VerticalAlignment="Center"></TextBlock>
+                <StackPanel Orientation="Horizontal">
+                    <TextBlock Text="Grantor Name" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="*" Foreground="Red" VerticalAlignment="Center"></TextBlock>
+                </StackPanel>
                 <Grid Grid.Column="1">
                     <TextBox Height="28" x:Name="GrantorNameTxt" VerticalContentAlignment="Center" VerticalAlignment="Center" Text="{Binding GrantorName}"/>
                     <TextBlock Text="Please Enter Grantor Name" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=GrantorNameTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
@@ -49,7 +53,10 @@
                     <TextBox Height="28" x:Name="OrganizationTxt" VerticalContentAlignment="Center" Text="{Binding Organization}" VerticalAlignment="Center"/>
                     <TextBlock Text="Please Enter Organization" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=OrganizationTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
                 </Grid>
-                <TextBlock Grid.Row="3" Text="Email" VerticalAlignment="Center"></TextBlock>
+                <StackPanel Grid.Row="3" Orientation="Horizontal">
+                    <TextBlock Text="Email" VerticalAlignment="Center"></TextBlock>
+                    <TextBlock Text="*" Foreground="Red" VerticalAlignment="Center"></TextBlock>
+                </StackPanel>
                 <Grid Grid.Column="1" Grid.Row="3">
                     <TextBox Height="28" x:Name="EmailTxt" VerticalContentAlignment="Center" Text="{Binding Email}" VerticalAlignment="Center"/>
                     <TextBlock Text="Please Enter Email" VerticalAlignment="Center"  Margin="10,0,0,0" Visibility="{Binding ElementName=EmailTxt, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
@@ -68,8 +75,9 @@
                 </Grid>
             </Grid>
         </Border>
-        <Grid Grid.Row="1">
-            <StackPanel Margin="0,0,24,12" VerticalAlignment="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
+        <TextBlock Grid.Row="1" Name="ErrorTipsText" Foreground="Red" Margin="15,0,24,14"></TextBlock>
+        <Grid Grid.Row="2">
+            <StackPanel Margin="0,-10,24,12" VerticalAlignment="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
                 <Button x:Name="CancelBtn" Height="32" Width="112" Margin="0,0,8,0" Content="Cancel" Click="CancelBtn_Click"></Button>
                 <Button x:Name="SaveBtn" Height="32" Width="112" Content="Save" Click="SaveBtn_Click"></Button>
             </StackPanel>   

+ 5 - 3
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddCustomCertificationControl.xaml.cs

@@ -133,18 +133,20 @@ namespace Compdfkit_Tools.PDFControl
 
             if (certificateInfo.GrantorName == string.Empty)
             {
+                ErrorTipsText.Text = "Please input Grantor Name";
                 return;
             }
-            else if(certificateInfo.Email == string.Empty)
+            if(certificateInfo.Email == string.Empty)
             {
+                ErrorTipsText.Text = "Please input Email";
                 return;
             }
-            else if (!CommonHelper.IsValidEmail(certificateInfo.Email))
+            if (!CommonHelper.IsValidEmail(certificateInfo.Email))
             {
+                ErrorTipsText.Text = "Email format is not correct";
                 return;
             }
             ContinueEvent?.Invoke(this, CreateCertificationMode.SaveCertificate);
-
         }
 
         private void AreaCmb_SelectionChanged(object sender, SelectionChangedEventArgs e)

+ 1 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddExistedCertificationControl.xaml

@@ -32,7 +32,7 @@
             <TextBlock Foreground="#43474D" Width="58" FontSize="14" FontFamily="Segoe UI" Text="Password" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
             <StackPanel  Margin="0,0,0,0">
                 <PasswordBox Name="PasswordBoxTxt" Padding="5,0,0,0" Width="258" Height="28"  VerticalContentAlignment="Center" VerticalAlignment="Center"></PasswordBox>
-                <TextBlock Name="ErrorTipsText" Foreground="Red" Margin="0,4,0,0" Visibility="Collapsed">Wrong password, please try again.</TextBlock>
+                <TextBlock Name="ErrorTipsText" Foreground="Red" Margin="0,4,0,0"></TextBlock>
             </StackPanel>
         </StackPanel>
         <Grid Grid.Row="4">

+ 8 - 6
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/AddExistedCertificationControl.xaml.cs

@@ -25,20 +25,22 @@ namespace Compdfkit_Tools.PDFControl
         {
             if (FileNameTxt.Text == string.Empty)
             {
+                ErrorTipsText.Text = "Please select a file.";
                 return;
             }
-            else if (PasswordBoxTxt.Password == string.Empty)
+            if (PasswordBoxTxt.Password == string.Empty)
             {
+                ErrorTipsText.Text = "Please input password.";
                 return;
             }
-            else if (!CPDFPKCS12CertHelper.CheckPKCS12Password(FileNameTxt.Text, PasswordBoxTxt.Password))
+            if (!CPDFPKCS12CertHelper.CheckPKCS12Password(FileNameTxt.Text, PasswordBoxTxt.Password))
             {
+                ErrorTipsText.Text = "Password is incorrect.";
                 return;
             }
-            else
-            {
-                FillSignatureEvent?.Invoke(sender, new CertificateAccess { filePath = FileNameTxt.Text, password = PasswordBoxTxt.Password });
-            }
+
+            FillSignatureEvent?.Invoke(sender, new CertificateAccess { filePath = FileNameTxt.Text, password = PasswordBoxTxt.Password });
+
         }
 
         private void SelectFileBtn_Click(object sender, System.Windows.RoutedEventArgs e)

+ 2 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/SaveCerficateControl.xaml

@@ -12,6 +12,7 @@
     </UserControl.Resources>
     <Grid>
         <Grid.RowDefinitions>
+            <RowDefinition Height="auto"></RowDefinition>
             <RowDefinition Height="auto"></RowDefinition>
             <RowDefinition Height="auto"></RowDefinition>
             <RowDefinition Height="auto"></RowDefinition>
@@ -37,7 +38,7 @@
             <TextBlock Foreground="#43474D" Width="120" FontSize="14" FontFamily="Segoe UI" Text="Confirm Password" VerticalAlignment="Top" Margin="10,5,10,0"></TextBlock>
             <PasswordBox Name="ConfirmPasswordPbx" Padding="5,0,0,0" Width="258" Height="28"  VerticalContentAlignment="Center" VerticalAlignment="Center"></PasswordBox>
         </StackPanel>
-        <TextBlock Name="ErrorTipsText" Foreground="Red" Margin="150,4,0,0" Visibility="Collapsed" Grid.Row="4">Confirmation password is not the same as the set password, please re-enter it.</TextBlock>
+        <TextBlock Name="ErrorTipsText" Foreground="Red" Margin="150,4,0,0" Grid.Row="4"></TextBlock>
         <Grid Grid.Row="5">
             <StackPanel  Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="24">
                 <Button x:Name="CancelBtn" Content="Cancel"  Margin="0,0,10,0" Width="112" Height="32" BorderThickness="1"></Button>

+ 10 - 2
Demo/Examples/Compdfkit_Tools/DigitalSignature/AddCertificationControl/SaveCerficateControl.xaml.cs

@@ -44,17 +44,25 @@ namespace Compdfkit_Tools.PDFControl
          
         private void DoneBtn_Click(object sender, RoutedEventArgs e)
         {
-            if(FilePath == string.Empty)
+            if(string.IsNullOrEmpty(FilePath))
             {
+                ErrorTipsText.Text = "Please select a file path";
                 return;
             }
 
-            if (SetPasswordPbx.Password != string.Empty && SetPasswordPbx.Password == ConfirmPasswordPbx.Password)
+            if (string.IsNullOrEmpty(SetPasswordPbx.Password))
+            {
+                ErrorTipsText.Text = "Please enter a password";
+                return;
+            }
+
+            if (SetPasswordPbx.Password == ConfirmPasswordPbx.Password)
             {
                 CertificateInfo.Password = SetPasswordPbx.Password;
             }
             else
             {
+                ErrorTipsText.Text = "Please enter the same password";
                 return;
             }
 

+ 2 - 1
Demo/Examples/Compdfkit_Tools/DigitalSignature/CPDFSignatureListControl/CPDFSignatureListControl.xaml.cs

@@ -183,7 +183,8 @@ namespace Compdfkit_Tools.DigitalSignature.CPDFSignatureListControl
         private void SignatureList_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
         {
             int index = SignatureList.SelectedIndex;
-            pdfViewer.GoToPage(signatureList[index].GetPageIndex(pdfViewer.Document));
+            if (index >= 0 && index < signatureList.Count)
+                pdfViewer.GoToPage(signatureList[index].GetPageIndex(pdfViewer.Document));
         }
     }
     

+ 21 - 7
Demo/Examples/Compdfkit_Tools/DigitalSignature/DigitalSignatureControl/DigitalSignatureControl.xaml.cs

@@ -9,6 +9,7 @@ using System.Windows.Controls;
 using System.Windows.Controls.Primitives;
 using System.Windows.Input;
 using System.Windows.Media;
+using Compdfkit_Tools.DigitalSignature.VerifyDigitalSignatureControl;
 using Compdfkit_Tools.Helper;
 using ComPDFKit.PDFAnnotation.Form;
 
@@ -119,14 +120,27 @@ namespace Compdfkit_Tools.PDFControl
         private void PDFView_WidgetClickHandler(object sender, WidgetArgs e)
         {
             Window parentWindow = Window.GetWindow((DependencyObject)sender);
-            AddCertificationDialog addCertificationControl = new AddCertificationDialog
+            var signatureWidget = (e as WidgetSignArgs).Sign;
+            if (signatureWidget.IsSigned())
             {
-                Owner = parentWindow
-            };
-            currentSignatureWidget = (e as WidgetSignArgs).Sign;
-            addCertificationControl.FillSignatureEvent -= AddCertificationControl_FillSignatureEvent;
-            addCertificationControl.FillSignatureEvent += AddCertificationControl_FillSignatureEvent;
-            addCertificationControl.ShowDialog(); 
+                VerifyDigitalSignatureControl verifyDigitalSignatureControl = new VerifyDigitalSignatureControl
+                {
+                    Owner = parentWindow
+                };
+                verifyDigitalSignatureControl.InitWithSignature(signatureWidget.GetSignature());
+                verifyDigitalSignatureControl.ShowDialog();
+            }
+            else
+            {
+                AddCertificationDialog addCertificationControl = new AddCertificationDialog
+                {
+                    Owner = parentWindow
+                };
+                currentSignatureWidget = signatureWidget;
+                addCertificationControl.FillSignatureEvent -= AddCertificationControl_FillSignatureEvent;
+                addCertificationControl.FillSignatureEvent += AddCertificationControl_FillSignatureEvent;
+                addCertificationControl.ShowDialog(); 
+            }
         }
 
         private void AddCertificationControl_FillSignatureEvent(object sender, CertificateAccess e)