ソースを参照

compdf(win) - 安全文案

liuaoran 1 年間 前
コミット
6bba149911
20 ファイル変更893 行追加493 行削除
  1. 3 1
      Demo/Examples/Compdfkit_Tools/Common/PreviewControl/PreviewControl.xaml
  2. 1 0
      Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj
  3. 3 2
      Demo/Examples/Compdfkit_Tools/Security/Encryption/EncryptionDialog.xaml
  4. 39 38
      Demo/Examples/Compdfkit_Tools/Security/Encryption/FileGridListControl.xaml
  5. 1 1
      Demo/Examples/Compdfkit_Tools/Security/Encryption/FileGridListControl.xaml.cs
  6. 8 7
      Demo/Examples/Compdfkit_Tools/Security/Encryption/SecurityOperationTypeDialog.xaml
  7. 11 13
      Demo/Examples/Compdfkit_Tools/Security/Encryption/SetEncryptionControl.xaml
  8. 1 1
      Demo/Examples/Compdfkit_Tools/Security/Encryption/SetEncryptionControl.xaml.cs
  9. 9 8
      Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/FileGridListWithPageRangeControl.xaml
  10. 1 1
      Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/FileGridListWithPageRangeControl.xaml.cs
  11. 8 7
      Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/PageRangeDialog.xaml
  12. 17 16
      Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkDialog.xaml
  13. 8 2
      Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkListDialog.xaml
  14. 7 6
      Demo/Examples/Compdfkit_Tools/Security/Watermark/RemoveWatermark/RemoveWatermarkListControl.xaml
  15. 1 1
      Demo/Examples/Compdfkit_Tools/Security/Watermark/RemoveWatermark/RemoveWatermarkListControl.xaml.cs
  16. 8 2
      Demo/Examples/Compdfkit_Tools/Security/Watermark/RemoveWatermark/RemoveWatermarkListDialog.xaml
  17. 11 5
      Demo/Examples/Compdfkit_Tools/Security/Watermark/WatermarkOperationTypeDialog.xaml
  18. 116 16
      Demo/Examples/Compdfkit_Tools/Strings/Security.Designer.cs
  19. 318 186
      Demo/Examples/Compdfkit_Tools/Strings/Security.resx
  20. 322 180
      Demo/Examples/Compdfkit_Tools/Strings/Security.zh.resx

+ 3 - 1
Demo/Examples/Compdfkit_Tools/Common/PreviewControl/PreviewControl.xaml

@@ -4,6 +4,7 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+              xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d" 
              d:DesignHeight="449" d:DesignWidth="248" Loaded="UserControl_Loaded">
     <UserControl.Resources>
@@ -48,6 +49,7 @@
                     </Setter.Value>
                 </Setter>
             </Style>
+            <common:CommonResourceConverter x:Key="CommonResourceConverter" />
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -57,7 +59,7 @@
             <RowDefinition Height="auto"></RowDefinition>
         </Grid.RowDefinitions>
         <Grid Margin="0,0,0,10">
-            <TextBlock Text="Preview" FontWeight="DemiBold" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Title_Preview}" FontWeight="DemiBold" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
                 <Button x:Name="ZoomInBtn" Height="20" Width="20" Style="{StaticResource TransparentButtonStyle}" Margin="0,0,10,0" Click="ScaleBtn_Click">
                     <Path HorizontalAlignment="Center" VerticalAlignment="Center" Data="M0,6.5 C0,2.91015 2.91015,0 6.5,0 C10.0899,0 13,2.91015 13,6.5 C13,8.12212 12.4058,9.60545 11.4232,10.7442 L15.5,14.821 L14.821,15.5 L10.7442,11.4232 C9.60545,12.4058 8.12212,13 6.5,13 C2.91015,13 0,10.0899 0,6.5 Z M12,6.5 C12,3.46243 9.53757,1 6.5,1 C3.46243,1 1,3.46243 1,6.5 C1,9.53757 3.46243,12 6.5,12 C9.53757,12 12,9.53757 12,6.5 Z M10,6 V7 H3 V6 H10 Z" 

+ 1 - 0
Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj

@@ -579,6 +579,7 @@
     <EmbeddedResource Include="Strings\Security.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Security.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
     </EmbeddedResource>
     <EmbeddedResource Include="Strings\Security.zh.resx">
       <DependentUpon>Security.resx</DependentUpon>

+ 3 - 2
Demo/Examples/Compdfkit_Tools/Security/Encryption/EncryptionDialog.xaml

@@ -13,6 +13,7 @@
     <Window.Resources>
         <ResourceDictionary>
             <common:AndMultiBoolValueConverter x:Key="AndMultiBoolValueConverter"></common:AndMultiBoolValueConverter>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
         </ResourceDictionary>
     </Window.Resources>
     <Grid>
@@ -33,7 +34,7 @@
                           ProgressMaxValue="{Binding  ElementName=FileListControl,Path=FileNumText}"  ></common:CustomProgressBarControl>
             
             <StackPanel Grid.Column="1" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,20,0">
-                <Button Height="32" Width="112" Content="Encrypt" Click="ButtonEncrypt_Click">
+                <Button Height="32" Width="112" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_OK}" Click="ButtonEncrypt_Click">
                     <Button.IsEnabled>
                         <MultiBinding Converter="{StaticResource AndMultiBoolValueConverter}">
                             <Binding ElementName="FileListControl" Path="IsEnsure"></Binding>
@@ -41,7 +42,7 @@
                         </MultiBinding>
                     </Button.IsEnabled>
                 </Button>
-                <Button Height="32" Width="112" Content="Cancel" Margin="10,0,0,0" Click="ButtonCancel_Click"></Button>
+                <Button Height="32" Width="112" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Cancel}" Margin="10,0,0,0" Click="ButtonCancel_Click"></Button>
             </StackPanel>
         </Grid>
     </Grid>

+ 39 - 38
Demo/Examples/Compdfkit_Tools/Security/Encryption/FileGridListControl.xaml

@@ -5,10 +5,12 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
              xmlns:pdfControl="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
              mc:Ignorable="d"
              Height="390" Width="646">
     <UserControl.Resources>
         <ResourceDictionary>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
             <Style x:Key="CustomDataGridStyle" TargetType="DataGrid">
                 <Setter Property="BorderBrush" Value="#E6E6E6" />
                 <Setter Property="BorderThickness" Value="1" />
@@ -28,57 +30,56 @@
             <RowDefinition Height="50"></RowDefinition>
             <RowDefinition Height="*"></RowDefinition>
         </Grid.RowDefinitions>
-        
+
         <DockPanel Grid.Row="0" Grid.Column="0">
-            <Button Content="Add Files" Height="32" Width="112" FontFamily="Microsoft YaHei" FontSize="14" Padding="28,6,27,6" HorizontalAlignment="Left" Click="AddFiles_Click"></Button>
+            <Button Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_AddFiles}" Height="32" Width="112" FontFamily="Microsoft YaHei" FontSize="14" Padding="28,6,27,6" HorizontalAlignment="Left" Click="AddFiles_Click"></Button>
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
-                <TextBlock Text="Total " FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
-                <TextBlock FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding FileNumText}" ></TextBlock>
-                <TextBlock Text=" Files" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_FileCount}" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
+                <TextBlock FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding FileNumText}"></TextBlock>
             </StackPanel>
         </DockPanel>
-        
+
         <Border Grid.Row="1" Grid.Column="0" BorderBrush="#CCCCCC" BorderThickness="1">
             <Grid Margin="10,10,10,0">
                 <Grid.RowDefinitions>
                     <RowDefinition Height="*"></RowDefinition>
                     <RowDefinition Height="50"></RowDefinition>
                 </Grid.RowDefinitions>
-                 <Grid Grid.Row="0" VerticalAlignment="Stretch">
-                     <DataGrid Background="White" BorderBrush="#E6E6E6" x:Name="FileDataGrid" HeadersVisibility="Column"
+                <Grid Grid.Row="0" VerticalAlignment="Stretch">
+                    <DataGrid Background="White" BorderBrush="#E6E6E6" x:Name="FileDataGrid" HeadersVisibility="Column"
                                IsReadOnly="True" AutoGenerateColumns="False" FontSize="14" SelectionMode="Extended"
                                ScrollViewer.CanContentScroll="False" HorizontalScrollBarVisibility="Auto" MouseLeftButtonDown="FileDataGrid_OnMouseLeftButtonDown" SelectionChanged="FileDataGrid_SelectionChanged">
-                         <DataGrid.Columns>
-                             <DataGridTextColumn Header="File" Width="*" Binding="{Binding FileName}" />
-                             <DataGridTextColumn Header="Size" Width="*" Binding="{Binding Size}" />
-                             <DataGridTextColumn Header="Location" Width="*" Binding="{Binding Location}" />
-                         </DataGrid.Columns>
-                         <DataGrid.Resources>
-                             <Style TargetType="DataGrid">
-                                 <Setter Property="HorizontalGridLinesBrush" Value="#E6E6E6" />
-                                 <Setter Property="VerticalGridLinesBrush" Value="#E6E6E6" />
-                             </Style>
-                             <Style TargetType="DataGridColumnHeader">
-                                 <Setter Property="Foreground" Value="#666666" />
-                                 <Setter Property="FontFamily" Value="Microsoft YaHei" />
-                                 <Setter Property="FontSize" Value="12" />
-                             </Style>
-                             <Style TargetType="DataGridCell">
-                                 <Setter Property="FontFamily" Value="Microsoft YaHei" />
-                                 <Setter Property="FontSize" Value="12" />
-                                 <Setter Property="Foreground" Value="#666666" />
-                                 <Setter Property="BorderThickness" Value="0"></Setter>
-                                 <Style.Triggers>
-                                     <Trigger Property="IsSelected" Value="True">
-                                         <Setter Property="Background" Value="#0078D7" />
-                                         <Setter Property="Foreground" Value="White" />
-                                     </Trigger>
-                                 </Style.Triggers>
-                             </Style>
-                         </DataGrid.Resources>
-                     </DataGrid>
+                        <DataGrid.Columns>
+                            <DataGridTextColumn Header="File Name" Width="*" Binding="{Binding FileName}" />
+                            <DataGridTextColumn Header="File Size" Width="*" Binding="{Binding Size}" />
+                            <DataGridTextColumn Header="Path" Width="*" Binding="{Binding Location}" />
+                        </DataGrid.Columns>
+                        <DataGrid.Resources>
+                            <Style TargetType="DataGrid">
+                                <Setter Property="HorizontalGridLinesBrush" Value="#E6E6E6" />
+                                <Setter Property="VerticalGridLinesBrush" Value="#E6E6E6" />
+                            </Style>
+                            <Style TargetType="DataGridColumnHeader">
+                                <Setter Property="Foreground" Value="#666666" />
+                                <Setter Property="FontFamily" Value="Microsoft YaHei" />
+                                <Setter Property="FontSize" Value="12" />
+                            </Style>
+                            <Style TargetType="DataGridCell">
+                                <Setter Property="FontFamily" Value="Microsoft YaHei" />
+                                <Setter Property="FontSize" Value="12" />
+                                <Setter Property="Foreground" Value="#666666" />
+                                <Setter Property="BorderThickness" Value="0"></Setter>
+                                <Style.Triggers>
+                                    <Trigger Property="IsSelected" Value="True">
+                                        <Setter Property="Background" Value="#0078D7" />
+                                        <Setter Property="Foreground" Value="White" />
+                                    </Trigger>
+                                </Style.Triggers>
+                            </Style>
+                        </DataGrid.Resources>
+                    </DataGrid>
                 </Grid>
-                <Button Grid.Row="1" x:Name="BtnRemove" FontFamily="Microsoft YaHei" FontSize="14" Content="Remove All" Width="112" Height="32" HorizontalAlignment="Left" Click="Remove_Click"></Button>
+                <Button Grid.Row="1" x:Name="BtnRemove" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_RemoveAll}" Width="112" Height="32" HorizontalAlignment="Left" Click="Remove_Click"></Button>
             </Grid>
         </Border>
     </Grid>

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Security/Encryption/FileGridListControl.xaml.cs

@@ -168,7 +168,7 @@ namespace Compdfkit_Tools.PDFControl
 
         private void FileDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            BtnRemove.Content = FileDataGrid.SelectedItems.Count > 0 ? "Remove" : "Remove All";
+            BtnRemove.Content = FileDataGrid.SelectedItems.Count > 0 ? LanguageHelper.SecurityManager.GetString("Button_RemoveSelected") : LanguageHelper.SecurityManager.GetString("Button_RemoveAll");
         }
 
         private void FileDataGrid_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)

+ 8 - 7
Demo/Examples/Compdfkit_Tools/Security/Encryption/SecurityOperationTypeDialog.xaml

@@ -2,8 +2,8 @@
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-        xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common"
         mc:Ignorable="d"
         ResizeMode="NoResize"
         ShowInTaskbar="False"
@@ -11,6 +11,7 @@
         Title="Operation Type" Height="214" Width="432">
     <Window.Resources>
         <ResourceDictionary>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="../../Asset/Styles/RadioButtonStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
@@ -22,7 +23,7 @@
             <RowDefinition Height="40"></RowDefinition>
         </Grid.RowDefinitions>
         <Grid Background="White" Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Foreground="#001A4E" FontFamily="Microsoft YaHei" Text="Password Type" FontWeight="DemiBold" FontSize="14"></TextBlock>
+            <TextBlock Foreground="#001A4E" FontFamily="Microsoft YaHei" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_OperationType}" FontWeight="DemiBold" FontSize="14"></TextBlock>
         </Grid>
         <Border Margin="0,10,7,12" BorderBrush="#33000000" BorderThickness="1">
             <Grid Margin="10" VerticalAlignment="Center" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Border}}}">
@@ -30,14 +31,14 @@
                     <RowDefinition></RowDefinition>
                     <RowDefinition></RowDefinition>
                 </Grid.RowDefinitions>
-                <RadioButton x:Name="RdoAddPassword" IsChecked="True" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="Add Password">
+                <RadioButton x:Name="RdoAddPassword" IsChecked="True" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_AddPassword}">
                 </RadioButton>
-                <RadioButton Grid.Row="1" x:Name="RdoRemovePassword" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="Remove Password"></RadioButton>
+                <RadioButton Grid.Row="1" x:Name="RdoRemovePassword" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_RemovePassword}"></RadioButton>
             </Grid>
         </Border>
         <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
-            <Button Content="Cancel" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Click="Cancel_Click"></Button>
-            <Button Content="OK" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Margin="10,0,10,0" Click="Confirm_Click"></Button>
+            <Button Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Cancel}" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Click="Cancel_Click"></Button>
+            <Button Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_OK}" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Margin="10,0,10,0" Click="Confirm_Click"></Button>
         </StackPanel>
     </Grid>
 </Window>

+ 11 - 13
Demo/Examples/Compdfkit_Tools/Security/Encryption/SetEncryptionControl.xaml

@@ -3,8 +3,7 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-             xmlns:common="clr-namespace:Compdfkit_Tools.Common"
-             xmlns:pdfControl="clr-namespace:Compdfkit_Tools.PDFControl"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common" 
              mc:Ignorable="d"
              Height="362" Width="368">
     <UserControl.Resources>
@@ -12,10 +11,10 @@
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="pack://application:,,,/Compdfkit_Tools;component/Asset/Styles/ComboBoxStyle.xaml"/>
             </ResourceDictionary.MergedDictionaries>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
             <common:AndMultiBoolValueConverter x:Key="AndMultiValueConverter"></common:AndMultiBoolValueConverter>
             <common:ReverseBoolConverter x:Key="ReverseBoolConverter" />
         </ResourceDictionary>
-        
     </UserControl.Resources>
     <Grid>
         <Grid.RowDefinitions>
@@ -25,7 +24,7 @@
         </Grid.RowDefinitions>
         
         <Grid Background="White" Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Foreground="#001A4E" Text="Open the Document" FontWeight="Bold" FontSize="16"></TextBlock>
+            <TextBlock Foreground="#001A4E" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Title_OpenDocument}" FontWeight="Bold" FontSize="16"></TextBlock>
         </Grid>
         <Border Margin="0,10,7,12" BorderBrush="#33000000" BorderThickness="1">
             <Grid Margin="8,0,20,15">
@@ -35,12 +34,11 @@
                 </Grid.RowDefinitions>
                 <StackPanel Orientation="Horizontal">
                     <CheckBox IsChecked="{Binding IsUserPasswordEnabled, Mode=OneWayToSource}" x:Name="ChbUserPassword" Width="20" Height="20" Margin="0,0,0,0"></CheckBox>
-                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="Require a password to open the document"></TextBlock>
+                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_OpenPassword}"></TextBlock>
                 </StackPanel>
-
                 <StackPanel Orientation="Horizontal" Grid.Row="1" Margin="20,0,0,-5">
-                    <TextBlock Height="25" FontFamily="Microsoft YaHei" FontSize="14" Text="Open Password"/>
-                    <common:PasswordBoxControl Password="{Binding UserPassword, Mode=OneWayToSource}" IsEnabled="{Binding IsUserPasswordEnabled,Mode=OneWay}" Margin="10,0,0,0" Watermark="Enter the password" Height="41" Width="175"></common:PasswordBoxControl>
+                    <TextBlock Height="25" FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_OpenPassword}"/>
+                    <common:PasswordBoxControl Password="{Binding UserPassword, Mode=OneWayToSource}" IsEnabled="{Binding IsUserPasswordEnabled,Mode=OneWay}" Margin="10,0,0,0" Watermark="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Holder_EnterPassword}" Height="41" Width="175"></common:PasswordBoxControl>
                 </StackPanel>
             </Grid>
         </Border>
@@ -58,11 +56,11 @@
                 </Grid.RowDefinitions>
                 <StackPanel Orientation="Horizontal">
                     <CheckBox IsChecked="{Binding IsOwnerPasswordEnabled,Mode=OneWayToSource}" x:Name="ChbOwnerPassword" Width="20" Height="20" Margin="0,5,0,0"></CheckBox>
-                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="Restrict printing or copying"></TextBlock>
+                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_OwnerPassword}"></TextBlock>
                 </StackPanel>
 
                 <StackPanel Orientation="Horizontal" Grid.Row="1" Margin="20,0,0,0">
-                    <TextBlock Height="25" FontFamily="Microsoft YaHei" FontSize="14" Text="Open Password"/>
+                    <TextBlock Height="25" FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_OwnerPassword}"/>
                     <common:PasswordBoxControl Password="{Binding OwnerPassword, Mode=OneWayToSource}" IsEnabled="{Binding IsOwnerPasswordEnabled}" Margin="10,0,0,0" Watermark="Enter Password" Height="41" Width="175"></common:PasswordBoxControl>
                 </StackPanel>
                 
@@ -71,7 +69,7 @@
                               IsChecked="{Binding IsAllowPrint,Converter={StaticResource ReverseBoolConverter} ,Mode=OneWayToSource}"
                               IsEnabled="{Binding IsOwnerPasswordEnabled}">
                     </CheckBox>
-                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="Restrict document printing"></TextBlock>
+                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Chk_CanPrinting}"></TextBlock>
                 </StackPanel>
                 
                 <StackPanel Grid.Row="3" Orientation="Horizontal" Margin="20,0,0,0">
@@ -79,12 +77,12 @@
                               IsChecked="{Binding IsAllowCopy,Converter={StaticResource ReverseBoolConverter} ,Mode=OneWayToSource}"
                               IsEnabled="{Binding IsOwnerPasswordEnabled}">
                     </CheckBox>
-                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="Restrict content copying"></TextBlock>
+                    <TextBlock Height="20" FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Chk_CanPrinting}"></TextBlock>
                 </StackPanel>
             </Grid>
         </Border>
         <DockPanel Grid.Row="2" Margin="10,0,10,10">
-            <TextBlock HorizontalAlignment="Left" Text="Encryption Level" FontFamily="Microsoft YaHei" FontSize="14" Margin="21,0,10,0" VerticalAlignment="Center"></TextBlock>
+            <TextBlock HorizontalAlignment="Left" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_EncryptionLevel}" FontFamily="Microsoft YaHei" FontSize="14" Margin="21,0,10,0" VerticalAlignment="Center"></TextBlock>
             <ComboBox HorizontalAlignment="Right" SelectedIndex="{Binding CryptographicLevel,Mode=OneWayToSource}" Style="{StaticResource ComboBoxStyle1}" FontFamily="Microsoft YaHei" FontSize="14" VerticalContentAlignment="Center" Width="150" Height="30" VerticalAlignment="Center">
                 <ComboBoxItem IsSelected="True">128 - bit RC4</ComboBoxItem>
                 <ComboBoxItem>128 - bit AES</ComboBoxItem>

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Security/Encryption/SetEncryptionControl.xaml.cs

@@ -125,6 +125,6 @@ namespace Compdfkit_Tools.PDFControl
         protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
         {
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
-        }
+        } 
     }
 }

+ 9 - 8
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/FileGridListWithPageRangeControl.xaml

@@ -4,11 +4,13 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
-             Loaded="UserControl_Loaded"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common" 
+             Loaded="UserControl_Loaded" 
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="500">
     <UserControl.Resources>
         <ResourceDictionary>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
             <Style x:Key="CustomDataGridStyle" TargetType="DataGrid">
                 <Setter Property="BorderBrush" Value="#E6E6E6" />
                 <Setter Property="BorderThickness" Value="1" />
@@ -30,11 +32,10 @@
         </Grid.RowDefinitions>
 
         <DockPanel Grid.Row="0" Grid.Column="0">
-            <Button x:Name="AddFilesBtn" Content="Add Files" Height="32" Width="112" FontFamily="Microsoft YaHei" FontSize="14" Padding="28,6,27,6" HorizontalAlignment="Left" Click="AddFilesBtn_Click"></Button>
-            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
-                <TextBlock Text="Total " FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
-                <TextBlock FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding FileNumText}" ></TextBlock>
-                <TextBlock Text=" Files" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
+            <Button x:Name="AddFilesBtn" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_AddFiles}" Height="32" Width="112" FontFamily="Microsoft YaHei" FontSize="14" Padding="28,6,27,6" HorizontalAlignment="Left" Click="AddFilesBtn_Click"></Button>
+            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0">
+                <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_AddFiles}" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
+                <TextBlock FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding FileNumText}" Margin="5,0,0,0"></TextBlock>
             </StackPanel>
         </DockPanel>
 
@@ -81,8 +82,8 @@
                     </DataGrid>
                 </Grid>
                 <StackPanel Grid.Row="1" Orientation="Horizontal">
-                    <Button x:Name="RemoveBtn" FontFamily="Microsoft YaHei" FontSize="14" Content="Remove All" Width="112" Height="32" HorizontalAlignment="Left" Click="RemoveBtn_Click"></Button>
-                    <Button x:Name="PageRangeBtn" FontFamily="Microsoft YaHei" FontSize="14" Content="Page Range" Width="112" Height="32" HorizontalAlignment="Left" Margin="20,0,0,0" Visibility="Collapsed" Click="PageRangeBtn_Click"></Button>
+                    <Button x:Name="RemoveBtn" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_RemoveAll}" Width="112" Height="32" HorizontalAlignment="Left" Click="RemoveBtn_Click"></Button>
+                    <Button x:Name="PageRangeBtn" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_PageRange}" Width="112" Height="32" HorizontalAlignment="Left" Margin="20,0,0,0" Visibility="Collapsed" Click="PageRangeBtn_Click"></Button>
                 </StackPanel>
             </Grid>
         </Border>

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/FileGridListWithPageRangeControl.xaml.cs

@@ -250,7 +250,7 @@ namespace Compdfkit_Tools.PDFControl
             var dataGrid = sender as DataGrid;
             if (dataGrid != null)
             {
-                RemoveBtn.Content = dataGrid.SelectedItems.Count > 0 ? "Remove" : "Remove All";
+                RemoveBtn.Content = dataGrid.SelectedItems.Count > 0 ? LanguageHelper.SecurityManager.GetString("Button_RemoveSelected") : LanguageHelper.SecurityManager.GetString("Button_RemoveAll");
                 PageRangeBtn.Visibility = dataGrid.SelectedItems.Count == 1 ? Visibility.Visible : Visibility.Collapsed;
             }
         }

+ 8 - 7
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/PageRangeDialog.xaml

@@ -10,6 +10,7 @@
         Title="Settings" Height="580" Width="704" Loaded="Window_Loaded">
     <Window.Resources>
         <ResourceDictionary>
+            <cpdfcommon:SecurityResourceConverter x:Key="SecurityResourceConverter"/> 
             <cpdfcommon:TextLengthToVisibilityConverter x:Key="TextLengthToVisibilityConverter"></cpdfcommon:TextLengthToVisibilityConverter>
             <ResourceDictionary.MergedDictionaries>
                 <ResourceDictionary Source="../../../Asset/Styles/RadioButtonStyle.xaml"></ResourceDictionary>
@@ -38,17 +39,17 @@
                         <RowDefinition></RowDefinition>
                     </Grid.RowDefinitions>
                     <RadioButton x:Name="AllRangeRdo" Tag="All" Margin="0,0,0,8" IsChecked="True" Checked="RangeRdo_Checked">
-                        <TextBlock Text="All Pages" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_AllPages}" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
                     </RadioButton>
                     <RadioButton  x:Name="OddRangeRdo" Tag="Odd" Grid.Row="1" Margin="0,0,0,8" Checked="RangeRdo_Checked">
-                        <TextBlock Text="Odd page only" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_OddPages}" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
                     </RadioButton>
                     <RadioButton x:Name="EvenRangeRdo" Tag="Even" IsEnabled="{Binding IsEvenEnable}" Grid.Row="2" Margin="0,0,0,8" Checked="RangeRdo_Checked">
-                        <TextBlock Text="Even page only" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
+                        <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_EvenPages}" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
                     </RadioButton>
                     <RadioButton x:Name="CustomRangeRdo" Tag="Custom" Grid.Row="3" Margin="0,0,0,8" Checked="RangeRdo_Checked">
                         <StackPanel Orientation="Horizontal">
-                            <TextBlock Text="Custom Range" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
+                            <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_CustomPages}" VerticalAlignment="Center" FontSize="14" FontFamily="Microsoft YaHei"></TextBlock>
                             <Grid>
                                 <TextBox x:Name="RangeTbx" Margin="12,0,0,0" Text="{Binding PageRange, UpdateSourceTrigger=PropertyChanged}" Height="28" Width="150" IsEnabled="{Binding ElementName=CustomRangeRdo, Path=IsChecked}" VerticalContentAlignment="Center"></TextBox>
                                 <TextBlock Text="1,3,5-10" VerticalAlignment="Center" Margin="15,0,0,0"  Visibility="{Binding ElementName=RangeTbx, Path=Text, Converter={StaticResource TextLengthToVisibilityConverter}}" IsHitTestVisible="False"  Foreground="#BBB"></TextBlock>
@@ -57,15 +58,15 @@
                     </RadioButton>
                 </Grid>
             </Border>
-            <TextBlock Text="Page Range" Margin="20,3,0,0" Background="#fff" Height="20" Width="75" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" FontWeight="DemiBold" FontFamily="Microsoft YaHei"></TextBlock>
+            <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_PageRange}" Margin="20,3,0,0" Background="#fff" Height="20"  HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" FontWeight="DemiBold" FontFamily="Microsoft YaHei"></TextBlock>
         </Grid>
         <Grid Grid.Row="1" Grid.ColumnSpan="2">
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,12,0,12">
                 <Button x:Name="ConfirmBtn" Height="32" Width="112" Margin="0,0,12,0" Click="ConfirmBtn_Click">
-                    <TextBlock Text="OK"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_OK}"></TextBlock>
                 </Button>
                 <Button x:Name="CancelBtn" Height="32" Width="112" Margin="0,0,24,0" Click="CancelBtn_Click">
-                    <TextBlock Text="Cancel"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Cancel}"></TextBlock>
                 </Button>
             </StackPanel>
         </Grid>

ファイルの差分が大きいため隠しています
+ 17 - 16
Demo/Examples/Compdfkit_Tools/Security/Watermark/AddWatermark/WatermarkDialog.xaml


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

@@ -4,9 +4,15 @@
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common" 
         mc:Ignorable="d"
         Title="WatermarkListDialog" 
         Height="522" Width="516" ShowInTaskbar="False" ResizeMode="NoResize">
+    <Window.Resources>
+        <ResourceDictionary>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
+        </ResourceDictionary>
+    </Window.Resources>
     <Grid>
         <Grid.RowDefinitions>
             <RowDefinition></RowDefinition>
@@ -15,8 +21,8 @@
         <local:FileGridListWithPageRangeControl x:Name="FileGridListWithPageRangeControl"></local:FileGridListWithPageRangeControl>
         <Grid Grid.Row="1">
             <StackPanel Orientation="Horizontal" Margin="0,24,24,12" HorizontalAlignment="Right">
-                <Button x:Name="NextBtn" Content="Next" Height="32" Width="112" IsEnabled="{Binding ElementName=FileGridListWithPageRangeControl, Path=IsEnsure}" Margin="0,0,8,0" Click="NextBtn_Click"></Button>
-                <Button x:Name="CancelBtn" Height="32" Content="Cancel" Width="112"  Click="CancelBtn_Click"></Button>
+                <Button x:Name="NextBtn" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Apply}" Height="32" Width="112" IsEnabled="{Binding ElementName=FileGridListWithPageRangeControl, Path=IsEnsure}" Margin="0,0,8,0" Click="NextBtn_Click"></Button>
+                <Button x:Name="CancelBtn" Height="32" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Cancel}" Width="112"  Click="CancelBtn_Click"></Button>
             </StackPanel>
         </Grid>
     </Grid>

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

@@ -4,11 +4,13 @@
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
-             mc:Ignorable="d" 
+             mc:Ignorable="d"  
              Loaded="UserControl_Loaded"
+             xmlns:common="clr-namespace:Compdfkit_Tools.Common" 
              d:DesignHeight="450" d:DesignWidth="800">
     <UserControl.Resources>
         <ResourceDictionary>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
             <Style x:Key="CustomDataGridStyle" TargetType="DataGrid">
                 <Setter Property="BorderBrush" Value="#E6E6E6" />
                 <Setter Property="BorderThickness" Value="1" />
@@ -30,11 +32,10 @@
         </Grid.RowDefinitions>
 
         <DockPanel Grid.Row="0" Grid.Column="0">
-            <Button x:Name="AddFilesBtn" Content="Add Files" Height="32" Width="112" FontFamily="Microsoft YaHei" FontSize="14" HorizontalAlignment="Left" Click="AddFilesBtn_Click"></Button>
+            <Button x:Name="AddFilesBtn" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_AddFiles}" Height="32" Width="112" FontFamily="Microsoft YaHei" FontSize="14" HorizontalAlignment="Left" Click="AddFilesBtn_Click"></Button>
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,20,0">
-                <TextBlock Text="Total " FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
-                <TextBlock FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding FileNumText}" ></TextBlock>
-                <TextBlock Text=" File(s)" FontFamily="Microsoft YaHei" FontSize="14"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_FileCount}" FontFamily="Microsoft YaHei" FontSize="14" ></TextBlock>
+                <TextBlock FontFamily="Microsoft YaHei" FontSize="14" Text="{Binding FileNumText}" ></TextBlock> 
             </StackPanel>
         </DockPanel>
 
@@ -80,7 +81,7 @@
                     </DataGrid>
                 </Grid>
                 <StackPanel Grid.Row="1" Orientation="Horizontal">
-                    <Button x:Name="RemoveBtn" FontFamily="Microsoft YaHei" FontSize="14" Content="Remove All" Width="112" Height="32" HorizontalAlignment="Left" Click="RemoveBtn_Click"></Button>
+                    <Button x:Name="RemoveBtn" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_RemoveAll}" Width="112" Height="32" HorizontalAlignment="Left" Click="RemoveBtn_Click"></Button>
                 </StackPanel>
             </Grid>
         </Border>

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

@@ -169,7 +169,7 @@ DependencyProperty.Register(nameof(IsEnsure), typeof(bool), typeof(RemoveWaterma
             var dataGrid = sender as DataGrid;
             if (dataGrid != null)
             {
-                RemoveBtn.Content = dataGrid.SelectedItems.Count > 0 ? "Remove" : "Remove All";
+                RemoveBtn.Content = dataGrid.SelectedItems.Count > 0 ? LanguageHelper.SecurityManager.GetString("Button_RemoveSelected") : LanguageHelper.SecurityManager.GetString("Button_RemoveAll");
             }
         }
 

+ 8 - 2
Demo/Examples/Compdfkit_Tools/Security/Watermark/RemoveWatermark/RemoveWatermarkListDialog.xaml

@@ -5,7 +5,13 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
         mc:Ignorable="d"
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common"  
         Title="RemoveWatermarkListDialog" Height="522" Width="516" ShowInTaskbar="False" ResizeMode="NoResize">
+    <Window.Resources>
+        <ResourceDictionary>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
+        </ResourceDictionary>
+    </Window.Resources>
     <Grid>
         <Grid.RowDefinitions>
             <RowDefinition></RowDefinition>
@@ -14,8 +20,8 @@
         <local:RemoveWatermarkListControl x:Name="RemoveWatermarkListControl"></local:RemoveWatermarkListControl>
         <Grid Grid.Row="1">
             <StackPanel Orientation="Horizontal" Margin="0,24,24,12" HorizontalAlignment="Right">
-                <Button x:Name="ApplyBtn" Content="Apply" Height="32" Width="112" IsEnabled="{Binding ElementName=FileGridListWithPageRangeControl, Path=IsEnsure}" Margin="0,0,8,0" Click="ApplyBtn_Click"></Button>
-                <Button x:Name="CancelBtn" Height="32" Content="Cancel" Width="112" Click="CancelBtn_Click"></Button>
+                <Button x:Name="ApplyBtn" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Apply}" Height="32" Width="112" IsEnabled="{Binding ElementName=FileGridListWithPageRangeControl, Path=IsEnsure}" Margin="0,0,8,0" Click="ApplyBtn_Click"></Button>
+                <Button x:Name="CancelBtn" Height="32" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Cancel}" Width="112" Click="CancelBtn_Click"></Button>
             </StackPanel>
         </Grid>
     </Grid>

+ 11 - 5
Demo/Examples/Compdfkit_Tools/Security/Watermark/WatermarkOperationTypeDialog.xaml

@@ -4,6 +4,7 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:local="clr-namespace:Compdfkit_Tools.PDFControl"
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common"  
         mc:Ignorable="d"
         ResizeMode="NoResize"
         ShowInTaskbar="False"
@@ -15,6 +16,7 @@
                 <ResourceDictionary Source="../../Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
                 <ResourceDictionary Source="../../Asset/Styles/RadioButtonStyle.xaml"></ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
+            <common:SecurityResourceConverter x:Key="SecurityResourceConverter"/>
         </ResourceDictionary>
     </Window.Resources>
     <Grid Margin="10,20,5,0">
@@ -23,21 +25,25 @@
             <RowDefinition Height="40"></RowDefinition>
         </Grid.RowDefinitions>
         <Grid Background="White" Margin="20,0,0,0"  Panel.ZIndex="1" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top">
-            <TextBlock Foreground="#001A4E" FontFamily="Microsoft YaHei" Text="Watermark Type" FontWeight="DemiBold" FontSize="14"></TextBlock>
+            <TextBlock Foreground="#001A4E" FontFamily="Microsoft YaHei" Text="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Text_OperationType}" FontWeight="DemiBold" FontSize="14"></TextBlock>
         </Grid>
         <Border Margin="0,10,7,12" BorderBrush="#33000000" BorderThickness="1">
             <Grid Margin="10" VerticalAlignment="Center" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Border}}}">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="81*"/>
+                    <ColumnDefinition Width="307*"/>
+                </Grid.ColumnDefinitions>
                 <Grid.RowDefinitions>
                     <RowDefinition Height="*"></RowDefinition>
                     <RowDefinition Height="*"></RowDefinition>
                 </Grid.RowDefinitions>
-                <RadioButton x:Name="AddWatermarkRdo" IsChecked="True" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="Add Watermarks"></RadioButton>
-                <RadioButton Grid.Row="1" x:Name="RemoveWatermarkRdo" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="Remove Watermarks"></RadioButton>
+                <RadioButton x:Name="AddWatermarkRdo" IsChecked="True" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_AddWatermarks}" Grid.ColumnSpan="2"></RadioButton>
+                <RadioButton Grid.Row="1" x:Name="RemoveWatermarkRdo" VerticalAlignment="Center" FontFamily="Microsoft YaHei" FontSize="14" Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Rdo_RemoveWatermark}" Grid.ColumnSpan="2"></RadioButton>
             </Grid>
         </Border>
         <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
-            <Button Content="Cancel" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Click="Cancel_Click"></Button>
-            <Button Content="OK" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Margin="10,0,10,0" Click="Confirm_Click"></Button>
+            <Button Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_Cancel}" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Click="Cancel_Click"></Button>
+            <Button Content="{Binding Converter={StaticResource SecurityResourceConverter}, ConverterParameter=Button_OK}" Width="112" Height="32" FontFamily="Microsoft YaHei" FontSize="14" Margin="10,0,10,0" Click="Confirm_Click"></Button>
         </StackPanel>
     </Grid>
 </Window>

+ 116 - 16
Demo/Examples/Compdfkit_Tools/Strings/Security.Designer.cs

@@ -1,6 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -18,7 +19,7 @@ namespace Compdfkit_Tools.Strings {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Security {
@@ -131,12 +132,21 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Restrict content copying.
+        /// </summary>
+        internal static string Chk_CanCopy {
+            get {
+                return ResourceManager.GetString("Chk_CanCopy", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Restrict document printing.
         /// </summary>
-        internal static string Chk_EmptyPassword {
+        internal static string Chk_CanPrinting {
             get {
-                return ResourceManager.GetString("Chk_EmptyPassword", resourceCulture);
+                return ResourceManager.GetString("Chk_CanPrinting", resourceCulture);
             }
         }
         
@@ -224,45 +234,54 @@ namespace Compdfkit_Tools.Strings {
         /// <summary>
         ///   Looks up a localized string similar to Add Passwords.
         /// </summary>
-        internal static string Options_AddPassword {
+        internal static string Rdo_AddPassword {
             get {
-                return ResourceManager.GetString("Options_AddPassword", resourceCulture);
+                return ResourceManager.GetString("Rdo_AddPassword", resourceCulture);
             }
         }
         
         /// <summary>
         ///   Looks up a localized string similar to Add Watermarks.
         /// </summary>
-        internal static string Options_AddWatermarks {
+        internal static string Rdo_AddWatermarks {
             get {
-                return ResourceManager.GetString("Options_AddWatermarks", resourceCulture);
+                return ResourceManager.GetString("Rdo_AddWatermarks", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Remove Passwords.
+        ///   Looks up a localized string similar to All pages in range.
         /// </summary>
-        internal static string Options_RemovePassword {
+        internal static string Rdo_AllPages {
             get {
-                return ResourceManager.GetString("Options_RemovePassword", resourceCulture);
+                return ResourceManager.GetString("Rdo_AllPages", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Remove Watermarks.
+        ///   Looks up a localized string similar to Behind the text.
         /// </summary>
-        internal static string Options_RemoveWatermark {
+        internal static string Rdo_Behind {
             get {
-                return ResourceManager.GetString("Options_RemoveWatermark", resourceCulture);
+                return ResourceManager.GetString("Rdo_Behind", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Behind the text.
+        ///   Looks up a localized string similar to Custom pages .
         /// </summary>
-        internal static string Rdo_Behind {
+        internal static string Rdo_CustomPages {
             get {
-                return ResourceManager.GetString("Rdo_Behind", resourceCulture);
+                return ResourceManager.GetString("Rdo_CustomPages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Even pages only.
+        /// </summary>
+        internal static string Rdo_EvenPages {
+            get {
+                return ResourceManager.GetString("Rdo_EvenPages", resourceCulture);
             }
         }
         
@@ -284,6 +303,33 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Odd pages only .
+        /// </summary>
+        internal static string Rdo_OddPages {
+            get {
+                return ResourceManager.GetString("Rdo_OddPages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove Passwords.
+        /// </summary>
+        internal static string Rdo_RemovePassword {
+            get {
+                return ResourceManager.GetString("Rdo_RemovePassword", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Remove Watermarks.
+        /// </summary>
+        internal static string Rdo_RemoveWatermark {
+            get {
+                return ResourceManager.GetString("Rdo_RemoveWatermark", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Text Watermark.
         /// </summary>
@@ -302,6 +348,15 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Size.
+        /// </summary>
+        internal static string Table_FileSize {
+            get {
+                return ResourceManager.GetString("Table_FileSize", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Page Range.
         /// </summary>
@@ -365,6 +420,15 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Font Color.
+        /// </summary>
+        internal static string Text_FontColor {
+            get {
+                return ResourceManager.GetString("Text_FontColor", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Layout Options.
         /// </summary>
@@ -473,6 +537,24 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to PDF Password Remover is an easy-to-use PDF security remover,which helps users decrypt PDF protections and remove restrictions on printing,editing and copying.
+        /// </summary>
+        internal static string Tip_EasyUse {
+            get {
+                return ResourceManager.GetString("Tip_EasyUse", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to If open password is required,you need to enter the right password first and then remove protections from PDF files..
+        /// </summary>
+        internal static string Tip_Require {
+            get {
+                return ResourceManager.GetString("Tip_Require", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Open the Document.
         /// </summary>
@@ -482,6 +564,15 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Password to Open the Document.
+        /// </summary>
+        internal static string Title_OpenPassword {
+            get {
+                return ResourceManager.GetString("Title_OpenPassword", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Password.
         /// </summary>
@@ -509,6 +600,15 @@ namespace Compdfkit_Tools.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Watermark Settings.
+        /// </summary>
+        internal static string Title_WatermarkSettings {
+            get {
+                return ResourceManager.GetString("Title_WatermarkSettings", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Next.
         /// </summary>

+ 318 - 186
Demo/Examples/Compdfkit_Tools/Strings/Security.resx

@@ -1,189 +1,321 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <root>
-    <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-        <xsd:element name="root" msdata:IsDataSet="true">
-            
-        </xsd:element>
-    </xsd:schema>
-    <resheader name="resmimetype">
-        <value>text/microsoft-resx</value>
-    </resheader>
-    <resheader name="version">
-        <value>1.3</value>
-    </resheader>
-    <resheader name="reader">
-        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-    </resheader>
-    <resheader name="writer">
-        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-    </resheader>
-    <data name="Title_Password" xml:space="preserve">
-        <value>Password</value>
-    </data>
-    <data name="Text_OperationType" xml:space="preserve">
-        <value>Operation Types</value>
-    </data>
-    <data name="Options_RemovePassword" xml:space="preserve">
-        <value>Remove Passwords</value>
-    </data>
-    <data name="Options_AddPassword" xml:space="preserve">
-        <value>Add Passwords</value>
-    </data>
-    <data name="Title_Watermark" xml:space="preserve">
-        <value>Watermark</value>
-    </data>
-    <data name="Options_RemoveWatermark" xml:space="preserve">
-        <value>Remove Watermarks</value>
-    </data>
-    <data name="Options_AddWatermarks" xml:space="preserve">
-        <value>Add Watermarks</value>
-    </data>
-    <data name="Text_SecuritySettings" xml:space="preserve">
-        <value>Security Settings</value>
-    </data>
-    <data name="Title_OpenDocument" xml:space="preserve">
-        <value>Open the Document</value>
-    </data>
-    <data name="Text_OpenPassword" xml:space="preserve">
-        <value>Open Password</value>
-    </data>
-    <data name="Holder_EnterPassword" xml:space="preserve">
-        <value>Enter the password</value>
-    </data>
-    <data name="Text_Support" xml:space="preserve">
-        <value>Support: Numbers, letters, @, $, !, %, ?, &amp;</value>
-    </data>
-    <data name="Warn_Empty" xml:space="preserve">
-        <value>The password can`t be empty.</value>
-    </data>
-    <data name="Text_Permisions" xml:space="preserve">
-        <value>Permissions</value>
-    </data>
-    <data name="Text_OwnerPassword" xml:space="preserve">
-        <value>Owner Password</value>
-    </data>
-    <data name="Holder_OwnerPassword" xml:space="preserve">
-        <value>Please enter the owner`s password</value>
-    </data>
-    <data name="Warn_SamePassword" xml:space="preserve">
-        <value>The password to open the document should be different from the owner`s password.</value>
-    </data>
-    <data name="Warn_EmptyPassword" xml:space="preserve">
-        <value>The password can`t be empty.</value>
-    </data>
-    <data name="Text_EmptyPassword" xml:space="preserve">
-        <value>Permission Settings</value>
-    </data>
-    <data name="Chk_EmptyPassword" xml:space="preserve">
-        <value>Restrict document printing</value>
-    </data>
-    <data name="Text_EncryptionLevel" xml:space="preserve">
-        <value>Encryption Level</value>
-    </data>
-    <data name="Text_Algorithm" xml:space="preserve">
-        <value>Algorithm</value>
-    </data>
-    <data name="Option_128RC4" xml:space="preserve">
-        <value>128-bit RC4</value>
-    </data>
-    <data name="Option_128AES" xml:space="preserve">
-        <value>128-bit AES</value>
-    </data>
-    <data name="Option_256AES" xml:space="preserve">
-        <value>256-bit AES</value>
-    </data>
-    <data name="Button_Cancel" xml:space="preserve">
-        <value>Cancel</value>
-    </data>
-    <data name="Button_Encrypt" xml:space="preserve">
-        <value>Encrypt</value>
-    </data>
-    <data name="Chk_OwnerPassword" xml:space="preserve">
-        <value>Enter Owner`s Password to Change the Security</value>
-    </data>
-    <data name="Warn_InvaildPassword" xml:space="preserve">
-        <value>Invalid Password</value>
-    </data>
-    <data name="Button_OK" xml:space="preserve">
-        <value>OK</value>
-    </data>
-    <data name="Text_Preview" xml:space="preserve">
-        <value>Preview</value>
-    </data>
-    <data name="ToolTip_Next" xml:space="preserve">
-        <value>Next</value>
-    </data>
-    <data name="ToolTip_Previous" xml:space="preserve">
-        <value>Previous</value>
-    </data>
-    <data name="Rdo_TextWatermark" xml:space="preserve">
-        <value>Text Watermark</value>
-    </data>
-    <data name="Holder_TextWatermark" xml:space="preserve">
-        <value>Type your watermark text here.</value>
-    </data>
-    <data name="Rdo_ImageWatermark" xml:space="preserve">
-        <value>Image Watermark</value>
-    </data>
-    <data name="Button_ImageWatermark" xml:space="preserve">
-        <value>Click and Select your watermark image.</value>
-    </data>
-    <data name="Text_Ratio" xml:space="preserve">
-        <value>Ratio</value>
-    </data>
-    <data name="Text_Rotation" xml:space="preserve">
-        <value>Rotation</value>
-    </data>
-    <data name="Text_Opacity" xml:space="preserve">
-        <value>Opacity</value>
-    </data>
-    <data name="Text_Layout" xml:space="preserve">
-        <value>Layout Options</value>
-    </data>
-    <data name="Rdo_Front" xml:space="preserve">
-        <value>In front of the text</value>
-    </data>
-    <data name="Rdo_Behind" xml:space="preserve">
-        <value>Behind the text</value>
-    </data>
-    <data name="Text_PageRange" xml:space="preserve">
-        <value>Page Range</value>
-    </data>
-    <data name="Text_CurrentPage" xml:space="preserve">
-        <value>Current Page</value>
-    </data>
-    <data name="Option_AllPages" xml:space="preserve">
-        <value>All Pages</value>
-    </data>
-    <data name="Chk_Tile" xml:space="preserve">
-        <value>Tile</value>
-    </data>
-    <data name="Button_Apply" xml:space="preserve">
-        <value>Apply</value>
-    </data>
-    <data name="Title_RemoveWatermark" xml:space="preserve">
-        <value>Remove Watermarks</value>
-    </data>
-    <data name="Button_AddFiles" xml:space="preserve">
-        <value>Add Files</value>
-    </data>
-    <data name="Button_RemoveAll" xml:space="preserve">
-        <value>Remove All Files</value>
-    </data>
-    <data name="Button_RemoveSelected" xml:space="preserve">
-        <value>Remove Selected Files</value>
-    </data>
-    <data name="Text_FileCount" xml:space="preserve">
-        <value>Files in Total: </value>
-    </data>
-    <data name="Table_FileName" xml:space="preserve">
-        <value>File Name</value>
-    </data>
-    <data name="Table_PageRange" xml:space="preserve">
-        <value>Page Range</value>
-    </data>
-    <data name="Table_Path" xml:space="preserve">
-        <value>Path</value>
-    </data>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Title_Password" xml:space="preserve">
+    <value>Password</value>
+  </data>
+  <data name="Text_OperationType" xml:space="preserve">
+    <value>Operation Types</value>
+  </data>
+  <data name="Rdo_RemovePassword" xml:space="preserve">
+    <value>Remove Passwords</value>
+  </data>
+  <data name="Rdo_AddPassword" xml:space="preserve">
+    <value>Add Passwords</value>
+  </data>
+  <data name="Title_Watermark" xml:space="preserve">
+    <value>Watermark</value>
+  </data>
+  <data name="Rdo_RemoveWatermark" xml:space="preserve">
+    <value>Remove Watermarks</value>
+  </data>
+  <data name="Rdo_AddWatermarks" xml:space="preserve">
+    <value>Add Watermarks</value>
+  </data>
+  <data name="Text_SecuritySettings" xml:space="preserve">
+    <value>Security Settings</value>
+  </data>
+  <data name="Title_OpenDocument" xml:space="preserve">
+    <value>Open the Document</value>
+  </data>
+  <data name="Text_OpenPassword" xml:space="preserve">
+    <value>Open Password</value>
+  </data>
+  <data name="Holder_EnterPassword" xml:space="preserve">
+    <value>Enter the password</value>
+  </data>
+  <data name="Text_Support" xml:space="preserve">
+    <value>Support: Numbers, letters, @, $, !, %, ?, &amp;</value>
+  </data>
+  <data name="Warn_Empty" xml:space="preserve">
+    <value>The password can`t be empty.</value>
+  </data>
+  <data name="Text_Permisions" xml:space="preserve">
+    <value>Permissions</value>
+  </data>
+  <data name="Text_OwnerPassword" xml:space="preserve">
+    <value>Owner Password</value>
+  </data>
+  <data name="Holder_OwnerPassword" xml:space="preserve">
+    <value>Please enter the owner`s password</value>
+  </data>
+  <data name="Warn_SamePassword" xml:space="preserve">
+    <value>The password to open the document should be different from the owner`s password.</value>
+  </data>
+  <data name="Warn_EmptyPassword" xml:space="preserve">
+    <value>The password can`t be empty.</value>
+  </data>
+  <data name="Text_EmptyPassword" xml:space="preserve">
+    <value>Permission Settings</value>
+  </data>
+  <data name="Chk_CanPrinting" xml:space="preserve">
+    <value>Restrict document printing</value>
+  </data>
+  <data name="Text_EncryptionLevel" xml:space="preserve">
+    <value>Encryption Level</value>
+  </data>
+  <data name="Text_Algorithm" xml:space="preserve">
+    <value>Algorithm</value>
+  </data>
+  <data name="Option_128RC4" xml:space="preserve">
+    <value>128-bit RC4</value>
+  </data>
+  <data name="Option_128AES" xml:space="preserve">
+    <value>128-bit AES</value>
+  </data>
+  <data name="Option_256AES" xml:space="preserve">
+    <value>256-bit AES</value>
+  </data>
+  <data name="Button_Cancel" xml:space="preserve">
+    <value>Cancel</value>
+  </data>
+  <data name="Button_Encrypt" xml:space="preserve">
+    <value>Encrypt</value>
+  </data>
+  <data name="Chk_OwnerPassword" xml:space="preserve">
+    <value>Enter Owner`s Password to Change the Security</value>
+  </data>
+  <data name="Warn_InvaildPassword" xml:space="preserve">
+    <value>Invalid Password</value>
+  </data>
+  <data name="Button_OK" xml:space="preserve">
+    <value>OK</value>
+  </data>
+  <data name="Text_Preview" xml:space="preserve">
+    <value>Preview</value>
+  </data>
+  <data name="ToolTip_Next" xml:space="preserve">
+    <value>Next</value>
+  </data>
+  <data name="ToolTip_Previous" xml:space="preserve">
+    <value>Previous</value>
+  </data>
+  <data name="Rdo_TextWatermark" xml:space="preserve">
+    <value>Text Watermark</value>
+  </data>
+  <data name="Holder_TextWatermark" xml:space="preserve">
+    <value>Type your watermark text here.</value>
+  </data>
+  <data name="Rdo_ImageWatermark" xml:space="preserve">
+    <value>Image Watermark</value>
+  </data>
+  <data name="Button_ImageWatermark" xml:space="preserve">
+    <value>Click and Select your watermark image.</value>
+  </data>
+  <data name="Text_Ratio" xml:space="preserve">
+    <value>Ratio</value>
+  </data>
+  <data name="Text_Rotation" xml:space="preserve">
+    <value>Rotation</value>
+  </data>
+  <data name="Text_Opacity" xml:space="preserve">
+    <value>Opacity</value>
+  </data>
+  <data name="Text_Layout" xml:space="preserve">
+    <value>Layout Options</value>
+  </data>
+  <data name="Rdo_Front" xml:space="preserve">
+    <value>In front of the text</value>
+  </data>
+  <data name="Rdo_Behind" xml:space="preserve">
+    <value>Behind the text</value>
+  </data>
+  <data name="Text_PageRange" xml:space="preserve">
+    <value>Page Range</value>
+  </data>
+  <data name="Text_CurrentPage" xml:space="preserve">
+    <value>Current Page</value>
+  </data>
+  <data name="Option_AllPages" xml:space="preserve">
+    <value>All Pages</value>
+  </data>
+  <data name="Chk_Tile" xml:space="preserve">
+    <value>Tile</value>
+  </data>
+  <data name="Button_Apply" xml:space="preserve">
+    <value>Apply</value>
+  </data>
+  <data name="Title_RemoveWatermark" xml:space="preserve">
+    <value>Remove Watermarks</value>
+  </data>
+  <data name="Button_AddFiles" xml:space="preserve">
+    <value>Add Files</value>
+  </data>
+  <data name="Button_RemoveAll" xml:space="preserve">
+    <value>Remove All Files</value>
+  </data>
+  <data name="Button_RemoveSelected" xml:space="preserve">
+    <value>Remove Selected Files</value>
+  </data>
+  <data name="Text_FileCount" xml:space="preserve">
+    <value>Files in Total: </value>
+  </data>
+  <data name="Table_FileName" xml:space="preserve">
+    <value>File Name</value>
+  </data>
+  <data name="Table_PageRange" xml:space="preserve">
+    <value>Page Range</value>
+  </data>
+  <data name="Table_Path" xml:space="preserve">
+    <value>Path</value>
+  </data>
+  <data name="Chk_CanCopy" xml:space="preserve">
+    <value>Restrict content copying</value>
+  </data>
+  <data name="Rdo_AllPages" xml:space="preserve">
+    <value>All pages in range</value>
+  </data>
+  <data name="Rdo_CustomPages" xml:space="preserve">
+    <value>Custom pages </value>
+  </data>
+  <data name="Rdo_EvenPages" xml:space="preserve">
+    <value>Even pages only</value>
+  </data>
+  <data name="Rdo_OddPages" xml:space="preserve">
+    <value>Odd pages only </value>
+  </data>
+  <data name="Table_FileSize" xml:space="preserve">
+    <value>Size</value>
+  </data>
+  <data name="Text_FontColor" xml:space="preserve">
+    <value>Font Color</value>
+  </data>
+  <data name="Title_WatermarkSettings" xml:space="preserve">
+    <value>Watermark Settings</value>
+  </data>
+  <data name="Tip_EasyUse" xml:space="preserve">
+    <value>PDF Password Remover is an easy-to-use PDF security remover,which helps users decrypt PDF protections and remove restrictions on printing,editing and copying</value>
+  </data>
+  <data name="Tip_Require" xml:space="preserve">
+    <value>If open password is required,you need to enter the right password first and then remove protections from PDF files.</value>
+  </data>
+  <data name="Title_OpenPassword" xml:space="preserve">
+    <value>Password to Open the Document</value>
+  </data>
 </root>

+ 322 - 180
Demo/Examples/Compdfkit_Tools/Strings/Security.zh.resx

@@ -1,182 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
 <root>
-    <resheader name="resmimetype">
-        <value>text/microsoft-resx</value>
-    </resheader>
-    <resheader name="version">
-        <value>1.3</value>
-    </resheader>
-    <resheader name="reader">
-        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-    </resheader>
-    <resheader name="writer">
-        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-    </resheader>
-    <data name="Title_Password" xml:space="preserve">
-        <value>密码</value>
-    </data>
-    <data name="Text_OperationType" xml:space="preserve">
-        <value>操作类型</value>
-    </data>
-    <data name="Options_RemovePassword" xml:space="preserve">
-        <value>移除密码</value>
-    </data>
-    <data name="Options_AddPassword" xml:space="preserve">
-        <value>添加密码</value>
-    </data>
-    <data name="Title_Watermark" xml:space="preserve">
-        <value>水印</value>
-    </data>
-    <data name="Options_RemoveWatermark" xml:space="preserve">
-        <value>移除水印</value>
-    </data>
-    <data name="Options_AddWatermarks" xml:space="preserve">
-        <value>添加水印</value>
-    </data>
-    <data name="Text_SecuritySettings" xml:space="preserve">
-        <value>安全设置</value>
-    </data>
-    <data name="Title_OpenDocument" xml:space="preserve">
-        <value>打开文档</value>
-    </data>
-    <data name="Text_OpenPassword" xml:space="preserve">
-        <value>文档开启密码</value>
-    </data>
-    <data name="Holder_EnterPassword" xml:space="preserve">
-        <value>请输入密码</value>
-    </data>
-    <data name="Text_Support" xml:space="preserve">
-        <value>支持字符:数字、字母、@、$、!、%、?、&amp;</value>
-    </data>
-    <data name="Warn_Empty" xml:space="preserve">
-        <value>密码不能为空。</value>
-    </data>
-    <data name="Text_Permisions" xml:space="preserve">
-        <value>权限</value>
-    </data>
-    <data name="Text_OwnerPassword" xml:space="preserve">
-        <value>文档所有者密码</value>
-    </data>
-    <data name="Holder_OwnerPassword" xml:space="preserve">
-        <value>请输入权限密码</value>
-    </data>
-    <data name="Warn_SamePassword" xml:space="preserve">
-        <value>文档开启密码与权限密码不可相同。</value>
-    </data>
-    <data name="Warn_EmptyPassword" xml:space="preserve">
-        <value>密码不能为空。</value>
-    </data>
-    <data name="Text_EmptyPassword" xml:space="preserve">
-        <value>权限设置</value>
-    </data>
-    <data name="Chk_EmptyPassword" xml:space="preserve">
-        <value>禁止打印</value>
-    </data>
-    <data name="Text_EncryptionLevel" xml:space="preserve">
-        <value>加密级别</value>
-    </data>
-    <data name="Text_Algorithm" xml:space="preserve">
-        <value>算法</value>
-    </data>
-    <data name="Option_128RC4" xml:space="preserve">
-        <value>128 - bit RC4</value>
-    </data>
-    <data name="Option_128AES" xml:space="preserve">
-        <value>128 - bit AES</value>
-    </data>
-    <data name="Option_256AES" xml:space="preserve">
-        <value>256 - bit AES</value>
-    </data>
-    <data name="Button_Cancel" xml:space="preserve">
-        <value>取消</value>
-    </data>
-    <data name="Button_Encrypt" xml:space="preserve">
-        <value>加密</value>
-    </data>
-    <data name="Chk_OwnerPassword" xml:space="preserve">
-        <value>输入权限密码进行安全设置</value>
-    </data>
-    <data name="Warn_InvaildPassword" xml:space="preserve">
-        <value>密码错误,请重试</value>
-    </data>
-    <data name="Button_OK" xml:space="preserve">
-        <value>确认</value>
-    </data>
-    <data name="Text_Preview" xml:space="preserve">
-        <value>预览</value>
-    </data>
-    <data name="ToolTip_Next" xml:space="preserve">
-        <value>下一页</value>
-    </data>
-    <data name="ToolTip_Previous" xml:space="preserve">
-        <value>上一页</value>
-    </data>
-    <data name="Rdo_TextWatermark" xml:space="preserve">
-        <value>文字水印</value>
-    </data>
-    <data name="Holder_TextWatermark" xml:space="preserve">
-        <value>请在此处输入水印文字</value>
-    </data>
-    <data name="Rdo_ImageWatermark" xml:space="preserve">
-        <value>图片水印</value>
-    </data>
-    <data name="Button_ImageWatermark" xml:space="preserve">
-        <value>选择水印图片</value>
-    </data>
-    <data name="Text_Ratio" xml:space="preserve">
-        <value>图片缩放比</value>
-    </data>
-    <data name="Text_Rotation" xml:space="preserve">
-        <value>旋转</value>
-    </data>
-    <data name="Text_Opacity" xml:space="preserve">
-        <value>不透明度</value>
-    </data>
-    <data name="Text_Layout" xml:space="preserve">
-        <value>图层次序</value>
-    </data>
-    <data name="Rdo_Front" xml:space="preserve">
-        <value>置于顶层</value>
-    </data>
-    <data name="Rdo_Behind" xml:space="preserve">
-        <value>置于底层</value>
-    </data>
-    <data name="Text_PageRange" xml:space="preserve">
-        <value>页面范围</value>
-    </data>
-    <data name="Text_CurrentPage" xml:space="preserve">
-        <value>当前页</value>
-    </data>
-    <data name="Option_AllPages" xml:space="preserve">
-        <value>所有页面</value>
-    </data>
-    <data name="Chk_Tile" xml:space="preserve">
-        <value>平铺水印</value>
-    </data>
-    <data name="Button_Apply" xml:space="preserve">
-        <value>确认</value>
-    </data>
-    <data name="Title_RemoveWatermark" xml:space="preserve">
-        <value>移除水印</value>
-    </data>
-    <data name="Button_AddFiles" xml:space="preserve">
-        <value>添加文件</value>
-    </data>
-    <data name="Button_RemoveAll" xml:space="preserve">
-        <value>移除文件</value>
-    </data>
-    <data name="Button_RemoveSelected" xml:space="preserve">
-        <value>删除所选文件</value>
-    </data>
-    <data name="Text_FileCount" xml:space="preserve">
-        <value>文件数:</value>
-    </data>
-    <data name="Table_FileName" xml:space="preserve">
-        <value>文件名</value>
-    </data>
-    <data name="Table_PageRange" xml:space="preserve">
-        <value>页面</value>
-    </data>
-    <data name="Table_Path" xml:space="preserve">
-        <value>路径</value>
-    </data>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Title_Password" xml:space="preserve">
+    <value>密码</value>
+  </data>
+  <data name="Text_OperationType" xml:space="preserve">
+    <value>操作类型</value>
+  </data>
+  <data name="Rdo_RemovePassword" xml:space="preserve">
+    <value>移除密码</value>
+  </data>
+  <data name="Rdo_AddPassword" xml:space="preserve">
+    <value>添加密码</value>
+  </data>
+  <data name="Title_Watermark" xml:space="preserve">
+    <value>水印</value>
+  </data>
+  <data name="Rdo_RemoveWatermark" xml:space="preserve">
+    <value>移除水印</value>
+  </data>
+  <data name="Rdo_AddWatermarks" xml:space="preserve">
+    <value>添加水印</value>
+  </data>
+  <data name="Text_SecuritySettings" xml:space="preserve">
+    <value>安全设置</value>
+  </data>
+  <data name="Title_OpenDocument" xml:space="preserve">
+    <value>打开文档</value>
+  </data>
+  <data name="Text_OpenPassword" xml:space="preserve">
+    <value>文档开启密码</value>
+  </data>
+  <data name="Holder_EnterPassword" xml:space="preserve">
+    <value>请输入密码</value>
+  </data>
+  <data name="Text_Support" xml:space="preserve">
+    <value>支持字符:数字、字母、@、$、!、%、?、&amp;</value>
+  </data>
+  <data name="Warn_Empty" xml:space="preserve">
+    <value>密码不能为空。</value>
+  </data>
+  <data name="Text_Permisions" xml:space="preserve">
+    <value>权限</value>
+  </data>
+  <data name="Text_OwnerPassword" xml:space="preserve">
+    <value>文档所有者密码</value>
+  </data>
+  <data name="Holder_OwnerPassword" xml:space="preserve">
+    <value>请输入权限密码</value>
+  </data>
+  <data name="Warn_SamePassword" xml:space="preserve">
+    <value>文档开启密码与权限密码不可相同。</value>
+  </data>
+  <data name="Warn_EmptyPassword" xml:space="preserve">
+    <value>密码不能为空。</value>
+  </data>
+  <data name="Text_EmptyPassword" xml:space="preserve">
+    <value>权限设置</value>
+  </data>
+  <data name="Chk_CanPrinting" xml:space="preserve">
+    <value>禁止打印</value>
+  </data>
+  <data name="Text_EncryptionLevel" xml:space="preserve">
+    <value>加密级别</value>
+  </data>
+  <data name="Text_Algorithm" xml:space="preserve">
+    <value>算法</value>
+  </data>
+  <data name="Option_128RC4" xml:space="preserve">
+    <value>128 - bit RC4</value>
+  </data>
+  <data name="Option_128AES" xml:space="preserve">
+    <value>128 - bit AES</value>
+  </data>
+  <data name="Option_256AES" xml:space="preserve">
+    <value>256 - bit AES</value>
+  </data>
+  <data name="Button_Cancel" xml:space="preserve">
+    <value>取消</value>
+  </data>
+  <data name="Button_Encrypt" xml:space="preserve">
+    <value>加密</value>
+  </data>
+  <data name="Chk_OwnerPassword" xml:space="preserve">
+    <value>输入权限密码进行安全设置</value>
+  </data>
+  <data name="Warn_InvaildPassword" xml:space="preserve">
+    <value>密码错误,请重试</value>
+  </data>
+  <data name="Button_OK" xml:space="preserve">
+    <value>确认</value>
+  </data>
+  <data name="Text_Preview" xml:space="preserve">
+    <value>预览</value>
+  </data>
+  <data name="ToolTip_Next" xml:space="preserve">
+    <value>下一页</value>
+  </data>
+  <data name="ToolTip_Previous" xml:space="preserve">
+    <value>上一页</value>
+  </data>
+  <data name="Rdo_TextWatermark" xml:space="preserve">
+    <value>文字水印</value>
+  </data>
+  <data name="Holder_TextWatermark" xml:space="preserve">
+    <value>请在此处输入水印文字</value>
+  </data>
+  <data name="Rdo_ImageWatermark" xml:space="preserve">
+    <value>图片水印</value>
+  </data>
+  <data name="Button_ImageWatermark" xml:space="preserve">
+    <value>选择水印图片</value>
+  </data>
+  <data name="Text_Ratio" xml:space="preserve">
+    <value>图片缩放比</value>
+  </data>
+  <data name="Text_Rotation" xml:space="preserve">
+    <value>旋转</value>
+  </data>
+  <data name="Text_Opacity" xml:space="preserve">
+    <value>不透明度</value>
+  </data>
+  <data name="Text_Layout" xml:space="preserve">
+    <value>图层次序</value>
+  </data>
+  <data name="Rdo_Front" xml:space="preserve">
+    <value>置于顶层</value>
+  </data>
+  <data name="Rdo_Behind" xml:space="preserve">
+    <value>置于底层</value>
+  </data>
+  <data name="Text_PageRange" xml:space="preserve">
+    <value>页面范围</value>
+  </data>
+  <data name="Text_CurrentPage" xml:space="preserve">
+    <value>当前页</value>
+  </data>
+  <data name="Option_AllPages" xml:space="preserve">
+    <value>所有页面</value>
+  </data>
+  <data name="Chk_Tile" xml:space="preserve">
+    <value>平铺水印</value>
+  </data>
+  <data name="Button_Apply" xml:space="preserve">
+    <value>确认</value>
+  </data>
+  <data name="Title_RemoveWatermark" xml:space="preserve">
+    <value>移除水印</value>
+  </data>
+  <data name="Button_AddFiles" xml:space="preserve">
+    <value>添加文件</value>
+  </data>
+  <data name="Button_RemoveAll" xml:space="preserve">
+    <value>移除文件</value>
+  </data>
+  <data name="Button_RemoveSelected" xml:space="preserve">
+    <value>删除所选文件</value>
+  </data>
+  <data name="Text_FileCount" xml:space="preserve">
+    <value>文件数:</value>
+  </data>
+  <data name="Table_FileName" xml:space="preserve">
+    <value>文件名</value>
+  </data>
+  <data name="Table_PageRange" xml:space="preserve">
+    <value>页面</value>
+  </data>
+  <data name="Table_Path" xml:space="preserve">
+    <value>路径</value>
+  </data>
+  <data name="Table_FileSize" xml:space="preserve">
+    <value>文件大小</value>
+  </data>
+  <data name="Table_FileSize1" xml:space="preserve">
+    <value>文件大小</value>
+  </data>
+  <data name="Rdo_AllPages" xml:space="preserve">
+    <value>全部页面</value>
+  </data>
+  <data name="Rdo_CustomPages" xml:space="preserve">
+    <value>自定义页面</value>
+  </data>
+  <data name="Rdo_EvenPages" xml:space="preserve">
+    <value>仅偶数页</value>
+  </data>
+  <data name="Rdo_OddPages" xml:space="preserve">
+    <value>仅奇数页</value>
+  </data>
+  <data name="Text_FontColor" xml:space="preserve">
+    <value>字体颜色</value>
+  </data>
+  <data name="Title_WatermarkSettings" xml:space="preserve">
+    <value>水印设置</value>
+  </data>
+  <data name="Chk_CanCopy" xml:space="preserve">
+    <value>禁止复制</value>
+  </data>
+  <data name="Text_EasyUse" xml:space="preserve">
+    <value>PDF密码移除工具是一款易于使用的PDF安全移除工具,可帮助用户解密PDF保护,移除对打印、编辑和复制的限制。</value>
+  </data>
+  <data name="Tip_Require" xml:space="preserve">
+    <value>如果需要开启密码,您需要先输入正确的密码,然后才能解除PDF文件的保护。</value>
+  </data>
+  <data name="Title_OpenPassword" xml:space="preserve">
+    <value>文档开启密码</value>
+  </data>
 </root>