Browse Source

compdfkit(win) - 水印渲染调整

liuaoran 1 year ago
parent
commit
b728eee6ec

+ 3 - 3
Demo/Examples/Compdfkit_Tools/Common/HomePage/FeaturesListControl.xaml

@@ -58,18 +58,18 @@
             </Style.Triggers>
         </Style>
     </UserControl.Resources>
-    <Grid Margin="60, 50, 0,0">
+    <Grid Margin="0, 0, 0,0">
         <Grid.RowDefinitions>
             <RowDefinition Height="40"></RowDefinition>
             <RowDefinition></RowDefinition>
         </Grid.RowDefinitions>
-        <TextBlock Text="Features List" FontFamily="Segoe ui" Foreground="#001A4E" FontSize="24" LineHeight="32" FontWeight="DemiBold"></TextBlock>
+        <TextBlock Text="Features List" Foreground="#001A4E" FontFamily="Segoe UI" FontSize="24" LineHeight="32" FontWeight="DemiBold"></TextBlock>
         <Grid x:Name="ListGd" Grid.Row="1" SizeChanged="ListGd_SizeChanged">
             <Grid.RowDefinitions>
                 <RowDefinition></RowDefinition>
                 <RowDefinition  Height="auto"></RowDefinition>
             </Grid.RowDefinitions>
-            <ListBox  x:Name="FeaturesListBox" Style="{StaticResource WrapListBoxStyle}" ItemsSource="{Binding PageItems}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"  SelectionMode="Single">
+            <ListBox  x:Name="FeaturesListBox" Style="{StaticResource WrapListBoxStyle}" ItemsSource="{Binding PageItems}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"  SelectionMode="Single" >
                 <ListBox.ItemContainerStyle>
                     <Style TargetType="ListBoxItem">
                         <Setter Property="Margin" Value="{Binding ItemMargin}" />

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Common/HomePage/HomePageControl.xaml

@@ -84,8 +84,8 @@
                     <RowDefinition Height="580" ></RowDefinition>
                     <RowDefinition> </RowDefinition>
                 </Grid.RowDefinitions>
-                <local:FeaturesListControl x:Name="FeaturesListControl"></local:FeaturesListControl>
-                <local:RecentFilesControl Grid.Row="1" x:Name="RecentFilesControl" Margin="0,20,0,0" >
+                <local:FeaturesListControl x:Name="FeaturesListControl" Margin=" 60,30,0,0"></local:FeaturesListControl>
+                <local:RecentFilesControl Grid.Row="1" x:Name="RecentFilesControl" Margin="60,0,0,0" >
                     <local:RecentFilesControl.Height>
                         <MultiBinding Converter="{StaticResource HomePageFileListHeightConverter}">
                             <Binding ElementName="HomePage" Path="ActualHeight"></Binding>

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Common/HomePage/RecentFilesControl.xaml

@@ -77,12 +77,12 @@
             </Setter>
         </Style>
     </UserControl.Resources>
-    <Grid Margin="20,0,20,0" Background="Transparent">
+    <Grid Margin="0,0,20,0" Background="Transparent">
         <Grid.RowDefinitions>
             <RowDefinition Height="Auto"/>
             <RowDefinition Height="*"/>
         </Grid.RowDefinitions>
-        <TextBlock Text="Quick Start" Background="Transparent" Margin="40,0,0,25" Height="32" FontFamily="Segoe UI" FontSize="24" LineHeight="32" Foreground="#001A4E"></TextBlock>
+        <TextBlock Text="Quick Start" Background="Transparent" Margin="0,0,0,25" Height="32" FontFamily="Segoe UI" FontSize="24" LineHeight="32" Foreground="#001A4E" FontWeight="DemiBold"></TextBlock>
         <ListView Grid.Row="1" x:Name="HistoryListView" MinWidth="380"
                   ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
                   Style="{StaticResource HistoryListBoxStyle}" ItemsSource="{Binding History}" 

+ 19 - 2
Demo/Examples/Compdfkit_Tools/Common/PreviewControl/PreviewControl.xaml.cs

@@ -220,10 +220,28 @@ namespace Compdfkit_Tools.PDFControl
             writeableBitmap.Freeze();
             Application.Current.Dispatcher.Invoke(new Action(() =>
             {
+                SaveWriteableBitmapToPng(writeableBitmap, "Output.png");
                 ImageSource = writeableBitmap;
+
             }));
         }
 
+        static void SaveWriteableBitmapToPng(WriteableBitmap writeableBitmap, string filePath)
+        {
+            // Create a PngBitmapEncoder
+            PngBitmapEncoder encoder = new PngBitmapEncoder();
+
+            // Create a memory stream to save the PNG image
+            using (MemoryStream stream = new MemoryStream())
+            {
+                // Save the WriteableBitmap to the memory stream
+                encoder.Frames.Add(BitmapFrame.Create(writeableBitmap));
+                encoder.Save(stream);
+
+                // Write the memory stream to a file
+                File.WriteAllBytes(filePath, stream.ToArray());
+            }
+        }
 
         private double CalculateThumbnailSize(Size size)
         {
@@ -257,7 +275,6 @@ namespace Compdfkit_Tools.PDFControl
                 {
                     BeginLoadImageThread(PageRangeList[CurrentIndex - 1] - 1);
                 };
-                BeginLoadImageThread(0);
                 AttachLoaded();
             }
             catch (Exception ex)
@@ -267,7 +284,7 @@ namespace Compdfkit_Tools.PDFControl
 
         virtual public void AttachLoaded()
         {
-            //Do something
+            BeginLoadImageThread(0);
         }
 
         private void CurrentIndexTxt_CanExecute(object sender, CanExecuteRoutedEventArgs e)

+ 2 - 2
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkDialog.xaml

@@ -134,10 +134,10 @@
                                     <RowDefinition></RowDefinition>
                                     <RowDefinition></RowDefinition>
                                 </Grid.RowDefinitions>
-                                <RadioButton x:Name="FrontChk" IsChecked="True" Checked="LocationChk_Checked">
+                                <RadioButton x:Name="FrontRdo" IsChecked="True" Checked="LocationRdo_Checked">
                                     <TextBlock Text="Front"></TextBlock>
                                 </RadioButton>
-                                <RadioButton x:Name="BehindChk" Grid.Row="1"  Checked="LocationChk_Checked">
+                                <RadioButton x:Name="BehindRdo" Grid.Row="1"  Checked="LocationRdo_Checked">
                                     <TextBlock Text="Behind"></TextBlock>
                                 </RadioButton>
                             </Grid>

+ 8 - 33
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkDialog.xaml.cs

@@ -80,34 +80,7 @@ namespace Compdfkit_Tools.PDFControl
             {
                 if (UpdateProper(ref _selectedTag, value))
                 {
-                    Vertalign = (C_Watermark_Vertalign)(SelectedTag / 3);
-                    Horizalign = (C_Watermark_Horizalign)(SelectedTag % 3);
-                }
-            }
-        }
-
-        private C_Watermark_Horizalign _horizalign = C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER;
-        public C_Watermark_Horizalign Horizalign
-        {
-            get => _horizalign;
-            set
-            {
-                if (UpdateProper(ref _horizalign, value))
-                {
-                    watermarkData.Horizalign = _horizalign;
-                }
-            }
-        }
-
-        private C_Watermark_Vertalign _vertalign = C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER;
-        public C_Watermark_Vertalign Vertalign
-        {
-            get => _vertalign;
-            set
-            {
-                if (UpdateProper(ref _vertalign, value))
-                {
-                    watermarkData.Vertalign = _vertalign;
+                    watermarkData.Align = _selectedTag;
                 }
             }
         }
@@ -365,10 +338,8 @@ namespace Compdfkit_Tools.PDFControl
             watermarkData.ImageScale = int.Parse(ImageScale);
             watermarkData.Rotation = Rotation;
             watermarkData.Opacity = OpacityValue;
-            watermarkData.Vertalign = Vertalign;
-            watermarkData.Horizalign = Horizalign;
+            watermarkData.Align = SelectedTag;
             watermarkData.VertOffset = VertOffset;
-            watermarkData.Horizalign = Horizalign;
             watermarkData.IsFront = IsFront;
             watermarkData.IsFullScreen = IsFullScreen;
             watermarkData.VerticalSpacing = VerticalSpacing;
@@ -397,7 +368,7 @@ namespace Compdfkit_Tools.PDFControl
 
         private void LocationChk_Checked(object sender, RoutedEventArgs e)
         {
-            var locationChk = sender as CheckBox;
+            var locationChk = sender as RadioButton;
             if (locationChk != null)
             {
                 if (locationChk.Name == "LocationChk")
@@ -513,7 +484,6 @@ namespace Compdfkit_Tools.PDFControl
         private void CancelBtn_Click(object sender, RoutedEventArgs e)
         {
             this.Close();
-            WindowClosed?.Invoke(weakReference.Target, null);
         }
 
         protected override void OnClosed(EventArgs e)
@@ -521,5 +491,10 @@ namespace Compdfkit_Tools.PDFControl
             PreviewControl.DeleteDisplayWatermark();
             base.OnClosed(e);
         }
+
+        private void LocationRdo_Checked(object sender, RoutedEventArgs e)
+        {
+
+        }
     }
 }

+ 4 - 2
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkListDialog.xaml.cs

@@ -120,8 +120,10 @@ namespace Compdfkit_Tools.PDFControl
             watermark.SetPages(CommonHelper.GetPageParmFromList(pageRangeList));
             watermark.SetRotation((float)(watermarkData.Rotation * Math.PI / 180.0));
             watermark.SetOpacity(watermarkData.Opacity);
-            watermark.SetVertalign(watermarkData.Vertalign);
-            watermark.SetHorizalign(watermarkData.Horizalign);
+
+            watermark.SetVertalign((C_Watermark_Vertalign)(watermarkData.Align / 3));
+            watermark.SetHorizalign((C_Watermark_Horizalign)(watermarkData.Align % 3));
+ 
             watermark.SetVertOffset(watermarkData.VertOffset);
             watermark.SetHorizOffset(watermarkData.HorizOffset);
             watermark.SetFront(watermarkData.IsFront);

+ 26 - 12
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkPreviewControl.cs

@@ -40,7 +40,6 @@ namespace Compdfkit_Tools.PDFControl
                     {
                         Document.ReleasePages();
                     }
-                    Document.DeleteWatermarks();
                     watermark?.ClearWatermark();
                     watermark?.Release();
                 }
@@ -57,6 +56,19 @@ namespace Compdfkit_Tools.PDFControl
         public WatermarkPreviewControl()
         {
             InitializeComponent();
+            
+            Loaded -= WatermarkPreviewControl_Loaded;
+            Loaded += WatermarkPreviewControl_Loaded;
+        }
+
+        private void WatermarkPreviewControl_Loaded(object sender, RoutedEventArgs e)
+        {
+            CurrentIndexChanged += WatermarkPreviewControl_CurrentIndexChanged;
+        }
+
+        private void WatermarkPreviewControl_CurrentIndexChanged(object sender, EventArgs e)
+        {
+            DeleteDisplayWatermark();
         }
 
         private void OnWatermarkChanged()
@@ -85,16 +97,16 @@ namespace Compdfkit_Tools.PDFControl
         }
 
         private void UpdateByImageWatermarkData()
-        { 
-            Bitmap bitmap = new Bitmap( WatermarkData.ImagePath);
+        {
+            Bitmap bitmap = new Bitmap(WatermarkData.ImagePath);
             bitmap = CommonHelper.ConvertTo32bppArgb(bitmap);
             byte[] byteArray = CommonHelper.ConvertBitmapToByteArray(bitmap);
             watermark.SetImage(byteArray, bitmap.Width, bitmap.Height);
-            watermark.SetScale((float)(WatermarkData.ImageScale/100.0));
+            watermark.SetScale((float)(WatermarkData.ImageScale / 100.0));
             UpdateByCommonWatermarkData();
         }
 
-        private void UpdateByTextWatermarkData() 
+        private void UpdateByTextWatermarkData()
         {
             watermark.SetText(WatermarkData.Text);
             watermark.SetFontName(WatermarkData.FontName);
@@ -108,9 +120,9 @@ namespace Compdfkit_Tools.PDFControl
         {
             watermark.SetPages((PageRangeList[CurrentIndex - 1] - 1).ToString());
             watermark.SetRotation((float)(WatermarkData.Rotation * Math.PI / 180.0));
-            watermark.SetOpacity((byte)WatermarkData.Opacity);
-            watermark.SetVertalign(WatermarkData.Vertalign);
-            watermark.SetHorizalign(WatermarkData.Horizalign);
+            watermark.SetOpacity(WatermarkData.Opacity);
+            watermark.SetVertalign((C_Watermark_Vertalign)(WatermarkData.Align / 3));
+            watermark.SetHorizalign((C_Watermark_Horizalign)(WatermarkData.Align % 3));
             watermark.SetVertOffset(WatermarkData.VertOffset);
             watermark.SetHorizOffset(WatermarkData.HorizOffset);
             watermark.SetFront(WatermarkData.IsFront);
@@ -118,21 +130,23 @@ namespace Compdfkit_Tools.PDFControl
             watermark.SetVerticalSpacing(WatermarkData.VerticalSpacing);
             watermark.SetHorizontalSpacing(WatermarkData.HorizontalSpacing);
             watermark.CreateWatermark();
+            watermark.UpdateWatermark();
         }
 
         public void DeleteDisplayWatermark()
         {
             if (watermark != null)
             {
-                Document.DeleteWatermarks();
+                Document.ReleasePages();
+                watermark?.ClearWatermark();
             }
-        }   
+        }
 
         override public void BeginLoadImageThread(int pageIndex)
         {
             UpdateByWatermarkData();
 
-             base.BeginLoadImageThread(pageIndex);
+            base.BeginLoadImageThread(pageIndex);
         }
 
         override public void AttachLoaded()
@@ -143,7 +157,7 @@ namespace Compdfkit_Tools.PDFControl
 
         private void WatermarkPreviewControl_WatermarkChanged(object sender, EventArgs e)
         {
-             BeginLoadImageThread(PageRangeList[CurrentIndex - 1] - 1);
+            BeginLoadImageThread(PageRangeList[CurrentIndex - 1] - 1);
         }
     }
 }

+ 3 - 3
Demo/Examples/Compdfkit_Tools/Security/Watermark/RemoveWatermark/RemoveWatermarkListControl.xaml

@@ -30,11 +30,11 @@
         </Grid.RowDefinitions>
 
         <DockPanel Grid.Row="0" Grid.Column="0">
-            <Button x:Name="AddFilesBtn" Content="Add Files" Height="32" Width="112" FontFamily="Segoe UI" FontSize="14" Padding="28,6,27,6" HorizontalAlignment="Left" Click="AddFilesBtn_Click"></Button>
-            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
+            <Button x:Name="AddFilesBtn" Content="Add Files" Height="32" Width="112" FontFamily="Segoe UI" FontSize="14" HorizontalAlignment="Left" Click="AddFilesBtn_Click"></Button>
+            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,20,0">
                 <TextBlock Text="Total " FontFamily="Segoe UI" FontSize="14"></TextBlock>
                 <TextBlock FontFamily="Segoe UI" FontSize="14" Text="{Binding FileNumText}" ></TextBlock>
-                <TextBlock Text=" Files" FontFamily="Segoe UI" FontSize="14"></TextBlock>
+                <TextBlock Text=" File(s)" FontFamily="Segoe UI" FontSize="14"></TextBlock>
             </StackPanel>
         </DockPanel>
 

+ 4 - 11
Demo/Examples/Compdfkit_Tools/Security/Watermark/WatermarkData.cs

@@ -81,18 +81,11 @@ namespace Compdfkit_Tools.PDFControl
             set => UpdateProper(ref _opacity, value);
         }
 
-        private C_Watermark_Vertalign _vertalign;
-        public C_Watermark_Vertalign Vertalign
+        private int _align;
+        public int Align
         {
-            get => _vertalign;
-            set => UpdateProper(ref _vertalign, value);
-        }
-
-        private C_Watermark_Horizalign _horizalign;
-        public C_Watermark_Horizalign Horizalign
-        {
-            get => _horizalign;
-            set=> UpdateProper(ref _horizalign, value);
+            get => _align;
+            set => UpdateProper(ref _align, value);
         }
 
         private float _vertOffset;

+ 5 - 25
Demo/Examples/Samples/LicenseKey.vb

@@ -1,37 +1,17 @@
 Imports ComPDFKit.NativeMethod
 Imports System
 Imports System.Xml
+Imports ComPDFKit.NativeMethod.CPDFSDKVerifier
+
 
 Public NotInheritable Class SDKLicenseHelper
-    Public Shared key As String = String.Empty
-    Public Shared secret As String = String.Empty
 
     Public Shared Function LicenseVerify() As Boolean
-        Dim sdkLicensePath As String = "license_key_windows.xml"
-        Dim xmlDocument As New XmlDocument()
-        xmlDocument.Load(sdkLicensePath)
-
-        Dim keyNode As XmlNode = xmlDocument.SelectSingleNode("/license/key")
-        Dim secretNode As XmlNode = xmlDocument.SelectSingleNode("/license/secret")
-
-        If keyNode IsNot Nothing AndAlso secretNode IsNot Nothing Then
-            key = keyNode.InnerText
-            secret = secretNode.InnerText
-        Else
-            Console.WriteLine("Key or secret element not found in the XML.")
-            Return False
-        End If
-
-        Dim result As Boolean = CPDFSDKVerifier.LoadNativeLibrary()
-        If Not result Then
-            Return False
-        End If
-
-        Dim verifyResult As LicenseErrorCode = CPDFSDKVerifier.LicenseVerify(key, secret)
-        If verifyResult <> LicenseErrorCode.LICENSE_ERR_SUCCESS Then
+        If Not LoadNativeLibrary() Then
             Return False
         End If
 
-        Return result
+        Dim verifyResult As LicenseErrorCode = CPDFSDKVerifier.LicenseVerify("license_key_windows.txt", True)
+        Return (verifyResult <> LicenseErrorCode.E_LICENSE_SUCCESS)
     End Function
 End Class