Browse Source

compdfkit(win) - 打印文案&注释回复文案

youna 8 tháng trước cách đây
mục cha
commit
2c29b5283c

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 55 - 1
Demo/Examples/Compdfkit.Controls/Annotation/PDFAnnotationList/PDFAnnotationListControl/CPDFAnnotationListControl.xaml


+ 165 - 13
Demo/Examples/Compdfkit.Controls/Annotation/PDFAnnotationList/PDFAnnotationListControl/CPDFAnnotationListControl.xaml.cs

@@ -12,13 +12,16 @@ using System.Windows;
 using System.Windows.Annotations;
 using System.Windows.Controls;
 using ComPDFKit.Controls.Helper;
-using static ComPDFKit.Controls.PDFControlUI.CPDFAnnoationListUI;
+using static ComPDFKit.Controls.PDFControlUI.CPDFAnnotationListUI;
+using ComPDFKit.Controls.PDFControlUI;
+using System.Windows.Input;
+using System;
 
 namespace ComPDFKit.Controls.PDFControl
 {
     public partial class CPDFAnnotationListControl : UserControl
     {
-        private List<C_ANNOTATION_TYPE> OmitList = new List<C_ANNOTATION_TYPE> 
+        private List<C_ANNOTATION_TYPE> OmitList = new List<C_ANNOTATION_TYPE>
         {
             C_ANNOTATION_TYPE.C_ANNOTATION_UNKOWN,
             C_ANNOTATION_TYPE.C_ANNOTATION_LINK,
@@ -43,6 +46,52 @@ namespace ComPDFKit.Controls.PDFControl
         {
             AnnotationList.DeleteItemHandler -= AnnotationList_DeleteItemHandler;
             AnnotationList.DeleteItemHandler += AnnotationList_DeleteItemHandler;
+            AnnotationList.ReplyStatusChanged -= AnnotationList_ReplyStatusChanged;
+            AnnotationList.ReplyStatusChanged += AnnotationList_ReplyStatusChanged;
+            AnnotationReplyListControl.ReplyListChanged -= AnnotationReplyListControl_ReplyListChanged;
+            AnnotationReplyListControl.ReplyListChanged += AnnotationReplyListControl_ReplyListChanged;
+        }
+
+        private void AnnotationList_ReplyStatusChanged(object sender, CPDFAnnotationState e)
+        {
+            if (sender is ReplyStatusControl replyStatusControl)
+            {
+                if (replyStatusControl.DataContext is AnnotationBindData data)
+                {
+                    if (pdfViewer != null)
+                    {
+                        CPDFAnnotation annot = data.BindProperty.Annotation;
+                        if (annot != null)
+                        {
+                            annot.SetState(e);
+                            pdfViewer.PDFViewTool.GetCPDFViewer().UpdateAnnotFrame();
+                            pdfViewer.PDFViewTool.IsDocumentModified = true;
+                        }
+                    }
+                }
+            }
+            else if (sender is CheckBox checkBox)
+            {
+                if (checkBox.DataContext is AnnotationBindData data)
+                {
+                    if (pdfViewer != null)
+                    {
+                        CPDFAnnotation annot = data.BindProperty.Annotation;
+                        if (annot != null)
+                        {
+                            annot.SetMarkedAnnotState(checkBox.IsChecked == true ? CPDFAnnotationState.C_ANNOTATION_MARKED : CPDFAnnotationState.C_ANNOTATION_UNMARKED, "");
+                            pdfViewer.PDFViewTool.GetCPDFViewer().UpdateAnnotFrame();
+                            pdfViewer.PDFViewTool.IsDocumentModified = true;
+                        }
+                    }
+                }
+            }
+        }
+
+        private void AnnotationReplyListControl_ReplyListChanged(object sender, System.EventArgs e)
+        {
+            pdfViewer.PDFViewTool.IsDocumentModified = true;
+            pdfViewer.PDFViewTool.GetCPDFViewer().UpdateAnnotFrame();
         }
 
         private void AnnotationList_DeleteItemHandler(object sender, Dictionary<int, List<int>> e)
@@ -71,9 +120,9 @@ namespace ComPDFKit.Controls.PDFControl
             }
             else
             {
-                BaseAnnot baseAnnot= pdfViewer.PDFToolManager.GetCacheHitTestAnnot();
+                BaseAnnot baseAnnot = pdfViewer.PDFToolManager.GetCacheHitTestAnnot();
                 AnnotData annotData = baseAnnot?.GetAnnotData();
-                if(annotData != null)
+                if (annotData != null)
                 {
                     AnnotationList.SelectAnnotationChanged(annotData.PageIndex, annotData.AnnotIndex);
                 }
@@ -95,21 +144,49 @@ namespace ComPDFKit.Controls.PDFControl
 
             List<BindAnnotationResult> bindAnnotationResults = new List<BindAnnotationResult>();
 
+            pdfViewer.UpdateAnnotFrame();
             for (int i = 0; i < pageCount; i++)
             {
 
                 List<AnnotParam> annotList = GetAnnotCommentList(i, pdfViewer.PDFViewTool.GetCPDFViewer().GetDocument());
-                if (annotList != null&& annotList.Count>0)
+                if (annotList != null && annotList.Count > 0)
                 {
                     Dispatcher.Invoke(() =>
                     {
                         foreach (AnnotParam annot in annotList)
                         {
-                            bindAnnotationResults.Add(new BindAnnotationResult
+                            CPDFAnnotation annotCore = pdfViewer?.GetCPDFViewer()?.GetAnnotForIndex(i, annot.AnnotIndex)?.GetAnnotData()?.Annot;
+                            if (annotCore == null || annotCore.IsReplyAnnot())
+                            {
+                                continue;
+                            }
+
+                            var bindResult = new BindAnnotationResult
                             {
                                 PageIndex = i,
-                                annotationData = annot
-                            });
+                                annotationData = annot,
+                                pdfViewer = pdfViewer,
+                                ReplyState = annotCore.GetState(),
+                                IsMarkState = annotCore.IsMarkedStateAnnot()
+                            };
+
+                            List<CPDFAnnotation> replyAnnotations = annotCore?.GetReplies();
+                            if (replyAnnotations != null && replyAnnotations.Count > 0)
+                            {
+                                foreach (CPDFAnnotation replyAnnot in replyAnnotations)
+                                {
+                                    if (replyAnnot == null)
+                                    {
+                                        continue;
+                                    }
+
+                                    bindResult.ReplyList.Add(new ReplyData
+                                    {
+                                        ReplyAnnotation = replyAnnot,
+                                    });
+                                }
+                            }
+                            bindAnnotationResults.Add(bindResult);
                         }
                     });
                 }
@@ -135,12 +212,12 @@ namespace ComPDFKit.Controls.PDFControl
             {
                 foreach (CPDFAnnotation annotation in docAnnots)
                 {
-                    if (annotation==null|| OmitList.Contains(annotation.Type))
+                    if (annotation == null || OmitList.Contains(annotation.Type))
                     {
                         continue;
                     }
-                    AnnotParam annotParam= ParamConverter.CPDFDataConverterToAnnotParam(currentDoc,pageIndex,annotation);
-                    if (annotParam!=null)
+                    AnnotParam annotParam = ParamConverter.CPDFDataConverterToAnnotParam(currentDoc, pageIndex, annotation);
+                    if (annotParam != null)
                     {
                         annotList.Add(annotParam);
                     }
@@ -177,8 +254,8 @@ namespace ComPDFKit.Controls.PDFControl
             {
                 Directory.CreateDirectory(tempPath);
             }
-            pdfViewer.PDFToolManager.GetDocument().ImportAnnotationFromXFDFPath(selectedPath,tempPath);
-                
+            pdfViewer.PDFToolManager.GetDocument().ImportAnnotationFromXFDFPath(selectedPath, tempPath);
+
             LoadAnnotationList();
             pdfViewer.PDFViewTool.GetCPDFViewer().UpdateVirtualNodes();
             pdfViewer.PDFViewTool.GetCPDFViewer().UpdateRenderFrame();
@@ -201,4 +278,79 @@ namespace ComPDFKit.Controls.PDFControl
             }
         }
     }
+
+    public class ExpandAllReplyCommand : ICommand
+    {
+        public event EventHandler CanExecuteChanged;
+
+        public bool CanExecute(object parameter)
+        {
+            return true;
+        }
+
+        public void Execute(object parameter)
+        {
+            if (parameter is CPDFAnnotationListControl annotationListControl)
+            {
+                annotationListControl.AnnotationList.ExpandAllReply(true);
+            }
+        }
+    }
+
+    public class FoldAllReplyCommand : ICommand
+    {
+        public event EventHandler CanExecuteChanged;
+
+        public bool CanExecute(object parameter)
+        {
+            return true;
+        }
+
+        public void Execute(object parameter)
+        {
+            if (parameter is CPDFAnnotationListControl annotationListControl)
+            {
+                annotationListControl.AnnotationList.ExpandAllReply(false);
+            }
+        }
+    }
+
+    public class DeleteAllAnnotCommand : ICommand
+    {
+        public event EventHandler CanExecuteChanged;
+
+        public bool CanExecute(object parameter)
+        {
+            return true;
+        }
+
+        public void Execute(object parameter)
+        {
+            if (parameter is CPDFAnnotationListControl annotationListControl)
+            {
+                annotationListControl.AnnotationList.DeleteAllReply();
+                annotationListControl.LoadAnnotationList();
+                annotationListControl.AnnotationList.DeleteAllAnnot();
+            }
+        }
+    }
+
+    public class DeleteAllReplyCommand : ICommand
+    {
+        public event EventHandler CanExecuteChanged;
+
+        public bool CanExecute(object parameter)
+        {
+            return true;
+        }
+
+        public void Execute(object parameter)
+        {
+            if (parameter is CPDFAnnotationListControl annotationListControl)
+            {
+                annotationListControl.AnnotationList.DeleteAllReply();
+                annotationListControl.LoadAnnotationList();
+            }
+        }
+    }
 }

+ 20 - 4
Demo/Examples/Compdfkit.Controls/Compdfkit.Controls.csproj

@@ -126,8 +126,14 @@
     <Compile Include="Annotation\PDFAnnotationList\PDFAnnotationListControl\CPDFAnnotationListControl.xaml.cs">
       <DependentUpon>CPDFAnnotationListControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\CPDFAnnoationListUI.xaml.cs">
-      <DependentUpon>CPDFAnnoationListUI.xaml</DependentUpon>
+    <Compile Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\AnnotationReplyListControl.xaml.cs">
+      <DependentUpon>AnnotationReplyListControl.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\CPDFAnnotationListUI.xaml.cs">
+      <DependentUpon>CPDFAnnotationListUI.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\ReplyStatusControl.xaml.cs">
+      <DependentUpon>ReplyStatusControl.xaml</DependentUpon>
     </Compile>
     <Compile Include="Annotation\PDFAnnotationPanel\PDFAnnotationUI\CPDFFreehandUI.xaml.cs">
       <DependentUpon>CPDFFreehandUI.xaml</DependentUpon>
@@ -170,6 +176,7 @@
     <Compile Include="Common\BaseControl\PageNumberControl.xaml.cs">
       <DependentUpon>PageNumberControl.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Common\Convert\AntiVisibilityConverter.cs" />
     <Compile Include="Common\Convert\BoolToColorConverter.cs" />
     <Compile Include="Common\Convert\HeightToTopMarginConverter.cs" />
     <Compile Include="Common\Convert\HomePageFileListHeightConverter.cs" />
@@ -186,6 +193,7 @@
     <Compile Include="Common\Convert\StringToVisibilityConverter.cs" />
     <Compile Include="Common\Convert\ShowDefaultCloseButtonConverter.cs" />
     <Compile Include="Common\Convert\ShowIconConverter.cs" />
+    <Compile Include="Common\Convert\SubtractionConverter.cs" />
     <Compile Include="Common\Convert\TagToBoolConverter.cs" />
     <Compile Include="Common\Convert\WindowStateToPathConverter.cs" />
     <Compile Include="Common\Convert\WindowStateToThicknessConverter.cs" />
@@ -761,7 +769,15 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\CPDFAnnoationListUI.xaml">
+    <Page Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\AnnotationReplyListControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\CPDFAnnotationListUI.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Annotation\PDFAnnotationList\PDFAnnotationListUI\ReplyStatusControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
@@ -1321,7 +1337,7 @@
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\..\..\..\ComPDFKit-ForRebuild\ComPDFKit\ComPDFKitCSharp\ComPDFKit.NET.csproj">
-      <Project>{56e518ad-c126-4b48-9a09-0a64c87020e4}</Project>
+      <Project>{122caf49-dcf7-49b1-8872-80b363e187e4}</Project>
       <Name>ComPDFKit.NET</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\..\..\ComPDFKit-Rebuild\ComPDFKit.Tool\ComPDFKit.Tool.csproj">

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

@@ -27,7 +27,7 @@
         </Grid>
         <StackPanel Grid.Row="2" HorizontalAlignment="Center" Orientation="Horizontal">
             <Button x:Name="btnPreButton" Height="32" Width="36" Margin="0,0,12,0" Click="btnPreButton_Click"></Button>
-            <TextBox x:Name="txbPageIndex" Height="32" Width="50" Text="{Binding PaperIndex, UpdateSourceTrigger=PropertyChanged}" LostFocus="txbPageIndex_LostFocus" PreviewLostKeyboardFocus="txbPageIndex_PreviewLostKeyboardFocus"></TextBox>
+            <TextBox x:Name="txbPageIndex" Height="32" Width="50" Text="{Binding PaperIndex, UpdateSourceTrigger=PropertyChanged}" LostFocus="txbPageIndex_LostFocus" PreviewLostKeyboardFocus="txbPageIndex_PreviewLostKeyboardFocus" TextAlignment="Center" VerticalContentAlignment="Center"></TextBox>
             <TextBlock Text=" of " VerticalAlignment="Center"></TextBlock>
             <TextBlock  Text="{Binding PrintedPageCount}"  VerticalAlignment="Center"></TextBlock>
             <Button x:Name="btnNextButton" Height="32" Width="36"  Margin="12,0,0,0" Click="btnNextButton_Click"></Button>

+ 72 - 32
Demo/Examples/Compdfkit.Controls/Printer/PrinterDialog.xaml

@@ -11,6 +11,7 @@
         Loaded="PrinterDialog_Loaded">
     <Window.Resources>
         <ResourceDictionary>
+            <common:CommonResourceConverter x:Key="CommonResourceConverter"></common:CommonResourceConverter>
             <Style x:Key="TitleTextBlockStyle" TargetType="{x:Type TextBlock}">
                 <Setter Property="FontSize" Value="12"></Setter>
                 <Setter Property="FontWeight" Value="SemiBold"></Setter>
@@ -42,7 +43,7 @@
         <StackPanel Orientation="Vertical" Grid.Column="1"  Margin="16,0,8,0">
             <StackPanel Orientation="Vertical">
                 <StackPanel Grid.Row="0" Orientation="Vertical">
-                    <TextBlock Text="Printer"  Style="{StaticResource TitleTextBlockStyle}" Margin="0,0,0,8"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Printer}"  Style="{StaticResource TitleTextBlockStyle}" Margin="0,0,0,8"></TextBlock>
                     <StackPanel Orientation="Horizontal">
                         <ComboBox
                           Style="{StaticResource ComboBoxStyle1}"
@@ -57,15 +58,16 @@
                     <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
                         <CheckBox      
                           x:Name="chkGrayScale"
-                        VerticalAlignment="Center"
-                        Content="Gray Scale"
-                         Click="chkGrayScale_Click"></CheckBox>
+                        VerticalAlignment="Center" 
+                         Click="chkGrayScale_Click">
+                            <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_GrayScale}"></TextBlock>
+                        </CheckBox>
                     </StackPanel>
                 </StackPanel>
                 <StackPanel Margin="0,8,0,0" Grid.Row="1" Orientation="Vertical">
-                    <TextBlock Text="Print Settings" Style="{StaticResource TitleTextBlockStyle}"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Settings}" Style="{StaticResource TitleTextBlockStyle}"></TextBlock>
                     <StackPanel Orientation="Horizontal"  Margin="0,0,0,8">
-                        <TextBlock Text="Paper" 
+                        <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Paper}"
                             Width="64"  
                             Height="22" 
                             FontFamily="Segoe UI"
@@ -82,16 +84,23 @@
                              Width="64"
                             Height="22" 
                             FontFamily="Segoe UI"
-                            FontSize="14" Text="Oritation"></TextBlock>
+                            FontSize="14" Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Oritation}"></TextBlock>
                         <ComboBox       
                             x:Name="cmbOritation"
                             Style="{StaticResource ComboBoxStyle1}" 
                             SelectionChanged="cmbOritation_SelectionChanged"
                             Width="155"
-                            Height="24" >
-                            <ComboBoxItem Content="Portrait" Tag="Portrait" IsSelected="True"></ComboBoxItem>
-                            <ComboBoxItem Content="Landscape" Tag="Landscape"></ComboBoxItem>
-                            <ComboBoxItem Content="Auto" Tag="Auto"></ComboBoxItem>
+                            Height="24" 
+                            Loaded="cmbOritation_Loaded" >
+                            <ComboBoxItem Tag="Portrait">
+                                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Portrait}"></TextBlock>
+                            </ComboBoxItem>
+                            <ComboBoxItem Tag="Landscape">
+                                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Landscape}"></TextBlock>
+                            </ComboBoxItem>
+                            <ComboBoxItem Tag="Auto">
+                                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Auto}"></TextBlock>
+                            </ComboBoxItem>
                         </ComboBox>
                     </StackPanel>
                 </StackPanel>
@@ -99,16 +108,24 @@
 
 
             <StackPanel Orientation="Vertical">
-                <TextBlock Text="Page Range" Style="{StaticResource TitleTextBlockStyle}" Margin="0,8,0,8"></TextBlock>
-                <RadioButton Margin="-8,0,0,8" Content="All Pages" GroupName="Page Range" x:Name="rdoAllPages" Tag="All" IsChecked="True" Click="rdoPageRange_Click"></RadioButton>
-                <RadioButton  Margin="-8,0,0,8" Content="Only Odd Pages"  GroupName="Page Range" x:Name="rdoOddPages" Tag="Odd"  Click="rdoPageRange_Click"></RadioButton>
-                <RadioButton  Margin="-8,0,0,8" Content="Only Even Pages"  GroupName="Page Range" x:Name="rdoEvenPages" Tag="Even"  Click="rdoPageRange_Click"></RadioButton>
+                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_PageRange}" Style="{StaticResource TitleTextBlockStyle}" Margin="0,8,0,8"></TextBlock>
+                <RadioButton Margin="-8,0,0,8" GroupName="Page Range" x:Name="rdoAllPages" Tag="All" IsChecked="True" Click="rdoPageRange_Click">
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_AllPages}"></TextBlock>
+                </RadioButton>
+                <RadioButton  Margin="-8,0,0,8"  GroupName="Page Range" x:Name="rdoOddPages" Tag="Odd"  Click="rdoPageRange_Click">
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_OnlyOdd}"></TextBlock>
+                </RadioButton>
+                <RadioButton  Margin="-8,0,0,8" GroupName="Page Range" x:Name="rdoEvenPages" Tag="Even"  Click="rdoPageRange_Click">
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_OnlyEven}"></TextBlock>
+                </RadioButton>
                 <StackPanel Orientation="Horizontal">
-                    <RadioButton  Margin="-8,0,8,8" Content="Custom Pages"  GroupName="Page Range" x:Name="rdoCustomPages" Tag="Custom"  Click="rdoPageRange_Click"></RadioButton>
+                    <RadioButton  Margin="-8,0,8,8"  GroupName="Page Range" x:Name="rdoCustomPages" Tag="Custom"  Click="rdoPageRange_Click">
+                        <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_CustomPages}"></TextBlock>
+                    </RadioButton>
                     <TextBox Width="120" Height="24" Text="{Binding PageRangeText, UpdateSourceTrigger=PropertyChanged}"></TextBox>
                 </StackPanel>
                 <CheckBox x:Name="chkReversePage" VerticalAlignment="Center" Click="chkReversePage_Click">
-                    <TextBlock Text=" Reverse page"></TextBlock>
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_ReversePage}"></TextBlock>
                 </CheckBox>
             </StackPanel>
         </StackPanel>
@@ -118,22 +135,29 @@
                 <TextBlock 
                             Style="{StaticResource TitleTextBlockStyle}"
                             Margin="0,0,0,8"
-                             Width="64" 
-                            Text="Content" HorizontalAlignment="Left"></TextBlock>
+                             Width="80" 
+                            Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Content}" HorizontalAlignment="Left"></TextBlock>
                 <ComboBox  
                             x:Name="cmbContent"
                             Style="{StaticResource ComboBoxStyle1}"
                             SelectionChanged="cmbContent_SelectionChanged"
                             HorizontalAlignment="Left"
                             Width="220"
-                            Height="24">
-                    <ComboBoxItem Content="Document" Tag="Document"></ComboBoxItem>
-                    <ComboBoxItem Content="Document and Markups" Tag="Document and Markups" IsSelected="True"></ComboBoxItem>
-                    <ComboBoxItem Content="Document and Stamps" Tag="Document and Stamps"></ComboBoxItem>
+                            Height="24"
+                    Loaded="cmbContent_Loaded">
+                    <ComboBoxItem Tag="Document">
+                        <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_OnlyD}"></TextBlock>
+                    </ComboBoxItem>
+                    <ComboBoxItem Tag="Document and Markups">
+                        <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_DaM}"></TextBlock>
+                    </ComboBoxItem>
+                    <ComboBoxItem Tag="Document and Stamps">
+                        <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_DaS}"></TextBlock>
+                    </ComboBoxItem>
                 </ComboBox>
             </StackPanel>
             <StackPanel Orientation="Vertical" Margin="0,8,0,8">
-                <TextBlock Text="Size"  Style="{StaticResource TitleTextBlockStyle}"></TextBlock>
+                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Size}"  Style="{StaticResource TitleTextBlockStyle}"></TextBlock>
                 <Grid VerticalAlignment="Top">
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="31*"/>
@@ -152,25 +176,41 @@
                             <RowDefinition  Height="28"></RowDefinition>
                             <RowDefinition  Height="28"></RowDefinition>
                         </Grid.RowDefinitions>
-                        <RadioButton GroupName="SizeMode" VerticalAlignment="Center" Content="Auto adapt" Grid.ColumnSpan="2" IsChecked="True" Tag="AutoAdapt" Click="SizeMode_Click"/>
-                        <RadioButton  GroupName="SizeMode"  Grid.Row="1" VerticalAlignment="Center"  Content="Actual size" Grid.ColumnSpan="2" Tag="ActualSize"  Click="SizeMode_Click"></RadioButton>
+                        <RadioButton GroupName="SizeMode" VerticalAlignment="Center" Grid.ColumnSpan="2" IsChecked="True" Tag="AutoAdapt" Click="SizeMode_Click">
+                            <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_AutoAdapt}"></TextBlock>
+                        </RadioButton>
+                        <RadioButton  GroupName="SizeMode"  Grid.Row="1" VerticalAlignment="Center" Grid.ColumnSpan="2" Tag="ActualSize"  Click="SizeMode_Click">
+                            <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_ActualSize}"></TextBlock>
+                        </RadioButton>
                         <StackPanel Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Center" Grid.ColumnSpan="2">
-                            <RadioButton  GroupName="SizeMode"  VerticalAlignment="Center" Content="Custom scale" Tag="CustomScale" Click="SizeMode_Click"></RadioButton>
+                            <RadioButton  GroupName="SizeMode"  VerticalAlignment="Center" Tag="CustomScale" Click="SizeMode_Click">
+                                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_CustomScale}"></TextBlock>
+                            </RadioButton>
                             <common:NumericUpDownControl x:Name="nmrcScale" Minimum="1" Maximum="1000"  Height="24" Margin="16,0,0,0" Text="{Binding SizeScale, Mode=TwoWay}"></common:NumericUpDownControl>
                         </StackPanel>
                     </Grid>
                 </Grid>
             </StackPanel>
             <StackPanel Grid.Row="3" VerticalAlignment="Top" >
-                <CheckBox Name="chkDuplex" Content="Duplex Printing"  Margin="0,8,0,8" Click="chkDuplex_Click"></CheckBox>
-                <RadioButton GroupName="Flip" x:Name="rdoLongEdge" Content="Flip On Long Edge" IsChecked="True" IsEnabled="{Binding IsChecked, ElementName=chkDuplex, Converter={StaticResource BoolToVisibleConverter}}" Margin="0,0,0,8" Click="rdoDuplex_Click" ></RadioButton>
-                <RadioButton GroupName="Flip" x:Name="rdoShortEdge" Content="Flip On Short Edge" Click="rdoDuplex_Click" IsEnabled="{Binding IsChecked, ElementName=chkDuplex, Converter={StaticResource BoolToVisibleConverter}}"></RadioButton>
+                <CheckBox Name="chkDuplex" Margin="0,8,0,8" Tag="" Click="chkDuplex_Click">
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_Duplex}"></TextBlock>
+                </CheckBox>
+                <RadioButton GroupName="Flip" Tag="" x:Name="rdoLongEdge" IsChecked="True" IsEnabled="{Binding IsChecked, ElementName=chkDuplex, Converter={StaticResource BoolToVisibleConverter}}" Margin="0,0,0,8" Click="rdoDuplex_Click" >
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_LongEdge}"></TextBlock>
+                </RadioButton>
+                <RadioButton GroupName="Flip" x:Name="rdoShortEdge" Click="rdoDuplex_Click" IsEnabled="{Binding IsChecked, ElementName=chkDuplex, Converter={StaticResource BoolToVisibleConverter}}">
+                    <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Printer_ShortEdge}"></TextBlock>
+                </RadioButton>
             </StackPanel>
         </StackPanel>
 
         <StackPanel Grid.Column="2" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
-            <Button x:Name="btnConfirm" Height="36" Width="108" Click="btnConfirm_Click"></Button>
-            <Button x:Name="btnCancel" Height="36" Width="108"  Margin="10" Click="btnCancel_Click"></Button>
+            <Button x:Name="btnConfirm" Height="36" Width="108" Click="btnConfirm_Click">
+                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Button_OK}"></TextBlock>
+            </Button>
+            <Button x:Name="btnCancel" Height="36" Width="108"  Margin="10" Click="btnCancel_Click">
+                <TextBlock Text="{Binding Converter={StaticResource CommonResourceConverter},ConverterParameter=Button_Cancel}"></TextBlock>
+            </Button>
         </StackPanel>
     </Grid>
 </Window>

+ 12 - 1
Demo/Examples/Compdfkit.Controls/Printer/PrinterDialog.xaml.cs

@@ -34,7 +34,7 @@ namespace ComPDFKit.Controls.PDFControl
             get { return _sizeScale; }
             set
             {
-                if(UpdateProper(ref _sizeScale, value))
+                if (UpdateProper(ref _sizeScale, value))
                 {
                     sizeModeInfo.Scale = value;
                     ctlPreview.Init(printSettingsInfo);
@@ -361,11 +361,22 @@ namespace ComPDFKit.Controls.PDFControl
         private void btnConfirm_Click(object sender, RoutedEventArgs e)
         {
             PrintHelper.PrintDocument(printSettingsInfo);
+            Close();
         }
 
         private void btnCancel_Click(object sender, RoutedEventArgs e)
         {
+            Close();
+        }
 
+        private void cmbOritation_Loaded(object sender, RoutedEventArgs e)
+        {
+            cmbOritation.SelectedIndex = 0;
+        }
+
+        private void cmbContent_Loaded(object sender, RoutedEventArgs e)
+        {
+            cmbContent.SelectedIndex = 1;
         }
     }
 }

+ 189 - 0
Demo/Examples/Compdfkit.Controls/Strings/Bota.Designer.cs

@@ -132,6 +132,15 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Reply.
+        /// </summary>
+        internal static string Button_Reply {
+            get {
+                return ResourceManager.GetString("Button_Reply", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Search.
         /// </summary>
@@ -186,6 +195,15 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Reply or add thoughts.
+        /// </summary>
+        internal static string Holder_Reply {
+            get {
+                return ResourceManager.GetString("Holder_Reply", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Search.
         /// </summary>
@@ -195,6 +213,15 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Add a new reply.
+        /// </summary>
+        internal static string Menu_AddReply {
+            get {
+                return ResourceManager.GetString("Menu_AddReply", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Certification Details.
         /// </summary>
@@ -204,6 +231,33 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Delete all annotations.
+        /// </summary>
+        internal static string Menu_DelAllAnnot {
+            get {
+                return ResourceManager.GetString("Menu_DelAllAnnot", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Delete a replies.
+        /// </summary>
+        internal static string Menu_DelAllReply {
+            get {
+                return ResourceManager.GetString("Menu_DelAllReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Delete annotation.
+        /// </summary>
+        internal static string Menu_DelAnnot {
+            get {
+                return ResourceManager.GetString("Menu_DelAnnot", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Delete.
         /// </summary>
@@ -222,6 +276,69 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Edit.
+        /// </summary>
+        internal static string Menu_Edit {
+            get {
+                return ResourceManager.GetString("Menu_Edit", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Expand all annotation.
+        /// </summary>
+        internal static string Menu_ExpandAllAnnot {
+            get {
+                return ResourceManager.GetString("Menu_ExpandAllAnnot", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Expand all replies.
+        /// </summary>
+        internal static string Menu_ExpandAllReply {
+            get {
+                return ResourceManager.GetString("Menu_ExpandAllReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Expand replies.
+        /// </summary>
+        internal static string Menu_ExpandReply {
+            get {
+                return ResourceManager.GetString("Menu_ExpandReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fold all annotation.
+        /// </summary>
+        internal static string Menu_FoldAllAnnot {
+            get {
+                return ResourceManager.GetString("Menu_FoldAllAnnot", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fold all replies.
+        /// </summary>
+        internal static string Menu_FoldAllReply {
+            get {
+                return ResourceManager.GetString("Menu_FoldAllReply", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fold replies.
+        /// </summary>
+        internal static string Menu_FoldReply {
+            get {
+                return ResourceManager.GetString("Menu_FoldReply", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Signature Details.
         /// </summary>
@@ -231,6 +348,69 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Accepted.
+        /// </summary>
+        internal static string Status_Accepted {
+            get {
+                return ResourceManager.GetString("Status_Accepted", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cancelled.
+        /// </summary>
+        internal static string Status_Cancelled {
+            get {
+                return ResourceManager.GetString("Status_Cancelled", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Completed.
+        /// </summary>
+        internal static string Status_Completed {
+            get {
+                return ResourceManager.GetString("Status_Completed", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Marked.
+        /// </summary>
+        internal static string Status_Marked {
+            get {
+                return ResourceManager.GetString("Status_Marked", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to None.
+        /// </summary>
+        internal static string Status_None {
+            get {
+                return ResourceManager.GetString("Status_None", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Rejected.
+        /// </summary>
+        internal static string Status_Rejected {
+            get {
+                return ResourceManager.GetString("Status_Rejected", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unmarked.
+        /// </summary>
+        internal static string Status_Unmarked {
+            get {
+                return ResourceManager.GetString("Status_Unmarked", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to No Annotations.
         /// </summary>
@@ -411,6 +591,15 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to More.
+        /// </summary>
+        internal static string Tooltip_More {
+            get {
+                return ResourceManager.GetString("Tooltip_More", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to View Outlines.
         /// </summary>

+ 63 - 0
Demo/Examples/Compdfkit.Controls/Strings/Bota.resx

@@ -249,4 +249,67 @@
   <data name="Button_Search" xml:space="preserve">
     <value>Search</value>
   </data>
+  <data name="Button_Reply" xml:space="preserve">
+    <value>Reply</value>
+  </data>
+  <data name="Holder_Reply" xml:space="preserve">
+    <value>Reply or add thoughts</value>
+  </data>
+  <data name="Menu_AddReply" xml:space="preserve">
+    <value>Add a new reply</value>
+  </data>
+  <data name="Menu_DelAllAnnot" xml:space="preserve">
+    <value>Delete all annotations</value>
+  </data>
+  <data name="Menu_DelAllReply" xml:space="preserve">
+    <value>Delete a replies</value>
+  </data>
+  <data name="Menu_DelAnnot" xml:space="preserve">
+    <value>Delete annotation</value>
+  </data>
+  <data name="Menu_Edit" xml:space="preserve">
+    <value>Edit</value>
+  </data>
+  <data name="Menu_ExpandAllAnnot" xml:space="preserve">
+    <value>Expand all annotation</value>
+  </data>
+  <data name="Menu_ExpandAllReply" xml:space="preserve">
+    <value>Expand all replies</value>
+  </data>
+  <data name="Menu_ExpandReply" xml:space="preserve">
+    <value>Expand replies</value>
+  </data>
+  <data name="Menu_FoldAllAnnot" xml:space="preserve">
+    <value>Fold all annotation</value>
+  </data>
+  <data name="Menu_FoldAllReply" xml:space="preserve">
+    <value>Fold all replies</value>
+  </data>
+  <data name="Menu_FoldReply" xml:space="preserve">
+    <value>Fold replies</value>
+  </data>
+  <data name="Status_Accepted" xml:space="preserve">
+    <value>Accepted</value>
+  </data>
+  <data name="Status_Cancelled" xml:space="preserve">
+    <value>Cancelled</value>
+  </data>
+  <data name="Status_Completed" xml:space="preserve">
+    <value>Completed</value>
+  </data>
+  <data name="Status_Marked" xml:space="preserve">
+    <value>Marked</value>
+  </data>
+  <data name="Status_None" xml:space="preserve">
+    <value>None</value>
+  </data>
+  <data name="Status_Rejected" xml:space="preserve">
+    <value>Rejected</value>
+  </data>
+  <data name="Status_Unmarked" xml:space="preserve">
+    <value>Unmarked</value>
+  </data>
+  <data name="Tooltip_More" xml:space="preserve">
+    <value>More</value>
+  </data>
 </root>

+ 63 - 0
Demo/Examples/Compdfkit.Controls/Strings/Bota.zh.resx

@@ -249,4 +249,67 @@
   <data name="Button_Search" xml:space="preserve">
     <value>搜索</value>
   </data>
+  <data name="Menu_DelAllAnnot" xml:space="preserve">
+    <value>删除所有注释</value>
+  </data>
+  <data name="Menu_DelAllReply" xml:space="preserve">
+    <value>删除所有回复</value>
+  </data>
+  <data name="Menu_Edit" xml:space="preserve">
+    <value>编辑</value>
+  </data>
+  <data name="Menu_ExpandAllAnnot" xml:space="preserve">
+    <value>展开所有注释</value>
+  </data>
+  <data name="Menu_ExpandAllReply" xml:space="preserve">
+    <value>展开所有回复</value>
+  </data>
+  <data name="Menu_FoldAllAnnot" xml:space="preserve">
+    <value>收起所有注释</value>
+  </data>
+  <data name="Menu_FoldAllReply" xml:space="preserve">
+    <value>收起所有回复</value>
+  </data>
+  <data name="Tooltip_More" xml:space="preserve">
+    <value>更多</value>
+  </data>
+  <data name="Button_Reply" xml:space="preserve">
+    <value>保存</value>
+  </data>
+  <data name="Holder_Reply" xml:space="preserve">
+    <value>请输入回复内容</value>
+  </data>
+  <data name="Menu_AddReply" xml:space="preserve">
+    <value>新增回复</value>
+  </data>
+  <data name="Menu_DelAnnot" xml:space="preserve">
+    <value>删除注释</value>
+  </data>
+  <data name="Menu_ExpandReply" xml:space="preserve">
+    <value>展开回复</value>
+  </data>
+  <data name="Menu_FoldReply" xml:space="preserve">
+    <value>收起回复</value>
+  </data>
+  <data name="Status_Accepted" xml:space="preserve">
+    <value>已接受</value>
+  </data>
+  <data name="Status_Cancelled" xml:space="preserve">
+    <value>已取消</value>
+  </data>
+  <data name="Status_Completed" xml:space="preserve">
+    <value>已完成</value>
+  </data>
+  <data name="Status_Marked" xml:space="preserve">
+    <value>已标记</value>
+  </data>
+  <data name="Status_None" xml:space="preserve">
+    <value>无</value>
+  </data>
+  <data name="Status_Rejected" xml:space="preserve">
+    <value>已拒绝</value>
+  </data>
+  <data name="Status_Unmarked" xml:space="preserve">
+    <value>未标记</value>
+  </data>
 </root>

+ 225 - 0
Demo/Examples/Compdfkit.Controls/Strings/Common.Designer.cs

@@ -807,6 +807,231 @@ namespace ComPDFKit.Controls.Strings {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Actual Size.
+        /// </summary>
+        internal static string Printer_ActualSize {
+            get {
+                return ResourceManager.GetString("Printer_ActualSize", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to All Pages.
+        /// </summary>
+        internal static string Printer_AllPages {
+            get {
+                return ResourceManager.GetString("Printer_AllPages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        internal static string Printer_Auto {
+            get {
+                return ResourceManager.GetString("Printer_Auto", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Auto Adapt.
+        /// </summary>
+        internal static string Printer_AutoAdapt {
+            get {
+                return ResourceManager.GetString("Printer_AutoAdapt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Content.
+        /// </summary>
+        internal static string Printer_Content {
+            get {
+                return ResourceManager.GetString("Printer_Content", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Custom Pages.
+        /// </summary>
+        internal static string Printer_CustomPages {
+            get {
+                return ResourceManager.GetString("Printer_CustomPages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Custom Scale.
+        /// </summary>
+        internal static string Printer_CustomScale {
+            get {
+                return ResourceManager.GetString("Printer_CustomScale", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Document and Markups.
+        /// </summary>
+        internal static string Printer_DaM {
+            get {
+                return ResourceManager.GetString("Printer_DaM", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Document and Stamp.
+        /// </summary>
+        internal static string Printer_DaS {
+            get {
+                return ResourceManager.GetString("Printer_DaS", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Duplex.
+        /// </summary>
+        internal static string Printer_Duplex {
+            get {
+                return ResourceManager.GetString("Printer_Duplex", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Gray Scale.
+        /// </summary>
+        internal static string Printer_GrayScale {
+            get {
+                return ResourceManager.GetString("Printer_GrayScale", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Landscape.
+        /// </summary>
+        internal static string Printer_Landscape {
+            get {
+                return ResourceManager.GetString("Printer_Landscape", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Flip On Long Edge.
+        /// </summary>
+        internal static string Printer_LongEdge {
+            get {
+                return ResourceManager.GetString("Printer_LongEdge", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Document.
+        /// </summary>
+        internal static string Printer_OnlyD {
+            get {
+                return ResourceManager.GetString("Printer_OnlyD", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Only Even Pages.
+        /// </summary>
+        internal static string Printer_OnlyEven {
+            get {
+                return ResourceManager.GetString("Printer_OnlyEven", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Only Odd Pages.
+        /// </summary>
+        internal static string Printer_OnlyOdd {
+            get {
+                return ResourceManager.GetString("Printer_OnlyOdd", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Oritation.
+        /// </summary>
+        internal static string Printer_Oritation {
+            get {
+                return ResourceManager.GetString("Printer_Oritation", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Page Range.
+        /// </summary>
+        internal static string Printer_PageRange {
+            get {
+                return ResourceManager.GetString("Printer_PageRange", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Paper.
+        /// </summary>
+        internal static string Printer_Paper {
+            get {
+                return ResourceManager.GetString("Printer_Paper", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Portrait.
+        /// </summary>
+        internal static string Printer_Portrait {
+            get {
+                return ResourceManager.GetString("Printer_Portrait", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Printer.
+        /// </summary>
+        internal static string Printer_Printer {
+            get {
+                return ResourceManager.GetString("Printer_Printer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Reverse Page.
+        /// </summary>
+        internal static string Printer_ReversePage {
+            get {
+                return ResourceManager.GetString("Printer_ReversePage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Printer Settings.
+        /// </summary>
+        internal static string Printer_Settings {
+            get {
+                return ResourceManager.GetString("Printer_Settings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Flip On Short Edge.
+        /// </summary>
+        internal static string Printer_ShortEdge {
+            get {
+                return ResourceManager.GetString("Printer_ShortEdge", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Size.
+        /// </summary>
+        internal static string Printer_Size {
+            get {
+                return ResourceManager.GetString("Printer_Size", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Progress.
         /// </summary>

+ 75 - 0
Demo/Examples/Compdfkit.Controls/Strings/Common.resx

@@ -513,4 +513,79 @@
   <data name="FileMenu_Flatten" xml:space="preserve">
     <value>Save as Flattened PDF</value>
   </data>
+  <data name="Printer_ActualSize" xml:space="preserve">
+    <value>Actual Size</value>
+  </data>
+  <data name="Printer_AllPages" xml:space="preserve">
+    <value>All Pages</value>
+  </data>
+  <data name="Printer_Auto" xml:space="preserve">
+    <value />
+  </data>
+  <data name="Printer_AutoAdapt" xml:space="preserve">
+    <value>Auto Adapt</value>
+  </data>
+  <data name="Printer_Content" xml:space="preserve">
+    <value>Content</value>
+  </data>
+  <data name="Printer_CustomPages" xml:space="preserve">
+    <value>Custom Pages</value>
+  </data>
+  <data name="Printer_CustomScale" xml:space="preserve">
+    <value>Custom Scale</value>
+  </data>
+  <data name="Printer_DaM" xml:space="preserve">
+    <value>Document and Markups</value>
+  </data>
+  <data name="Printer_DaS" xml:space="preserve">
+    <value>Document and Stamp</value>
+  </data>
+  <data name="Printer_Duplex" xml:space="preserve">
+    <value>Duplex</value>
+  </data>
+  <data name="Printer_GrayScale" xml:space="preserve">
+    <value>Gray Scale</value>
+  </data>
+  <data name="Printer_Landscape" xml:space="preserve">
+    <value>Landscape</value>
+  </data>
+  <data name="Printer_LongEdge" xml:space="preserve">
+    <value>Flip On Long Edge</value>
+  </data>
+  <data name="Printer_OnlyD" xml:space="preserve">
+    <value>Document</value>
+  </data>
+  <data name="Printer_OnlyEven" xml:space="preserve">
+    <value>Only Even Pages</value>
+  </data>
+  <data name="Printer_OnlyOdd" xml:space="preserve">
+    <value>Only Odd Pages</value>
+  </data>
+  <data name="Printer_Oritation" xml:space="preserve">
+    <value>Oritation</value>
+  </data>
+  <data name="Printer_PageRange" xml:space="preserve">
+    <value>Page Range</value>
+  </data>
+  <data name="Printer_Paper" xml:space="preserve">
+    <value>Paper</value>
+  </data>
+  <data name="Printer_Portrait" xml:space="preserve">
+    <value>Portrait</value>
+  </data>
+  <data name="Printer_Printer" xml:space="preserve">
+    <value>Printer</value>
+  </data>
+  <data name="Printer_ReversePage" xml:space="preserve">
+    <value>Reverse Page</value>
+  </data>
+  <data name="Printer_Settings" xml:space="preserve">
+    <value>Printer Settings</value>
+  </data>
+  <data name="Printer_ShortEdge" xml:space="preserve">
+    <value>Flip On Short Edge</value>
+  </data>
+  <data name="Printer_Size" xml:space="preserve">
+    <value>Size</value>
+  </data>
 </root>

+ 75 - 0
Demo/Examples/Compdfkit.Controls/Strings/Common.zh.resx

@@ -513,4 +513,79 @@
   <data name="FileMenu_Flatten" xml:space="preserve">
     <value>另存为扁平化副本</value>
   </data>
+  <data name="Printer_ActualSize" xml:space="preserve">
+    <value>实际尺寸</value>
+  </data>
+  <data name="Printer_AllPages" xml:space="preserve">
+    <value>所有页面</value>
+  </data>
+  <data name="Printer_Auto" xml:space="preserve">
+    <value>自动</value>
+  </data>
+  <data name="Printer_AutoAdapt" xml:space="preserve">
+    <value>自适应</value>
+  </data>
+  <data name="Printer_Content" xml:space="preserve">
+    <value>打印内容设置</value>
+  </data>
+  <data name="Printer_CustomPages" xml:space="preserve">
+    <value>自定义页面</value>
+  </data>
+  <data name="Printer_CustomScale" xml:space="preserve">
+    <value>自定义尺寸</value>
+  </data>
+  <data name="Printer_DaM" xml:space="preserve">
+    <value>文档和标记</value>
+  </data>
+  <data name="Printer_DaS" xml:space="preserve">
+    <value>文档和注释</value>
+  </data>
+  <data name="Printer_Duplex" xml:space="preserve">
+    <value>双面打印</value>
+  </data>
+  <data name="Printer_GrayScale" xml:space="preserve">
+    <value>黑白(灰度)打印</value>
+  </data>
+  <data name="Printer_Landscape" xml:space="preserve">
+    <value>横向</value>
+  </data>
+  <data name="Printer_LongEdge" xml:space="preserve">
+    <value>长边翻页</value>
+  </data>
+  <data name="Printer_OnlyD" xml:space="preserve">
+    <value>仅文档</value>
+  </data>
+  <data name="Printer_OnlyEven" xml:space="preserve">
+    <value>仅偶数页</value>
+  </data>
+  <data name="Printer_OnlyOdd" xml:space="preserve">
+    <value>仅奇数页</value>
+  </data>
+  <data name="Printer_Oritation" xml:space="preserve">
+    <value>方向</value>
+  </data>
+  <data name="Printer_PageRange" xml:space="preserve">
+    <value>页面范围</value>
+  </data>
+  <data name="Printer_Paper" xml:space="preserve">
+    <value>纸张</value>
+  </data>
+  <data name="Printer_Portrait" xml:space="preserve">
+    <value>纵向</value>
+  </data>
+  <data name="Printer_Printer" xml:space="preserve">
+    <value>打印机</value>
+  </data>
+  <data name="Printer_ReversePage" xml:space="preserve">
+    <value>反转页面</value>
+  </data>
+  <data name="Printer_Settings" xml:space="preserve">
+    <value>打印设置</value>
+  </data>
+  <data name="Printer_ShortEdge" xml:space="preserve">
+    <value>短边翻页</value>
+  </data>
+  <data name="Printer_Size" xml:space="preserve">
+    <value>大小模式</value>
+  </data>
 </root>