Browse Source

Merge branch 'dev' of http://git.kdan.cc:8865/Windows/PDFOffice_Windows_exe into dev

OYXH\oyxh 2 năm trước cách đây
mục cha
commit
867c7820ee
45 tập tin đã thay đổi với 2089 bổ sung465 xóa
  1. 12 4
      PDF Office/CustomControl/CompositeControl/SlidContentPop.xaml.cs
  2. 168 0
      PDF Office/Model/AnnotPanel/AnnotColorList.cs
  3. 14 160
      PDF Office/Model/AnnotPanel/AnnotCommon.cs
  4. 163 0
      PDF Office/MultilingualResources/PDF Office.en.xlf
  5. 163 0
      PDF Office/MultilingualResources/PDF Office.zh-Hans.xlf
  6. 163 0
      PDF Office/MultilingualResources/PDF Office.zh-Hant.xlf
  7. 1 0
      PDF Office/PDF Office.csproj
  8. 361 0
      PDF Office/Strings/MainPage/MainPage.Designer.cs
  9. 122 0
      PDF Office/Strings/MainPage/MainPage.resx
  10. 45 0
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterCSVDialogViewModel.cs
  11. 45 0
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterHTMLDialogViewModel.cs
  12. 53 8
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterImgDialogViewModel.cs
  13. 45 0
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterPPTDialogViewModel.cs
  14. 45 0
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterRTFDialogViewModel.cs
  15. 45 0
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterTextDialogViewModel.cs
  16. 45 0
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterWordDialogViewModel.cs
  17. 149 37
      PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePictureToPDFDialogViewModel.cs
  18. 119 0
      PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialogViewModel.cs
  19. 58 16
      PDF Office/ViewModels/FillAndSign/FillAndSignContentViewModel.cs
  20. 73 31
      PDF Office/ViewModels/FillAndSign/PropertyPanel/ShapFillPropertyViewModel.cs
  21. 7 6
      PDF Office/ViewModels/PropertyPanel/AnnotPanel/FreehandAnnotPropertyViewModel.cs
  22. 1 1
      PDF Office/ViewModels/PropertyPanel/AnnotPanel/FreetextAnnotPropertyViewModel.cs
  23. 5 5
      PDF Office/ViewModels/PropertyPanel/AnnotPanel/SharpsAnnotPropertyViewModel.cs
  24. 29 29
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Command.cs
  25. 2 6
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs
  26. 28 2
      PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs
  27. 28 3
      PDF Office/Views/BottomToolContent.xaml
  28. 13 0
      PDF Office/Views/BottomToolContent.xaml.cs
  29. 3 3
      PDF Office/Views/Dialog/ConverterDialogs/ConverterCSVDialog.xaml
  30. 6 6
      PDF Office/Views/Dialog/ConverterDialogs/ConverterHTMLDialog.xaml
  31. 3 3
      PDF Office/Views/Dialog/ConverterDialogs/ConverterImgDialog.xaml
  32. 7 7
      PDF Office/Views/Dialog/ConverterDialogs/ConverterPPTDialog.xaml
  33. 6 6
      PDF Office/Views/Dialog/ConverterDialogs/ConverterRTFDialog.xaml
  34. 6 6
      PDF Office/Views/Dialog/ConverterDialogs/ConverterTextDialog.xaml
  35. 5 5
      PDF Office/Views/Dialog/ConverterDialogs/ConverterWordDialog.xaml
  36. 15 14
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePagePictureToPDFDialog.xaml
  37. 10 10
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialog.xaml
  38. 0 1
      PDF Office/Views/FillAndSign/PropertyPanel/ShapFillProperty.xaml.cs
  39. 6 10
      PDF Office/Views/PropertyPanel/AnnotPanel/FreehandAnnotProperty.xaml
  40. 1 59
      PDF Office/Views/PropertyPanel/AnnotPanel/FreehandAnnotProperty.xaml.cs
  41. 6 10
      PDF Office/Views/PropertyPanel/AnnotPanel/SharpsAnnotProperty.xaml
  42. 1 16
      PDF Office/Views/PropertyPanel/AnnotPanel/SharpsAnnotProperty.xaml.cs
  43. 3 0
      PDF Office/Views/PropertyPanel/AnnotPanel/TextAnnotProperty.xaml
  44. 5 0
      PDF Office/Views/PropertyPanel/ViewModular/ViewModularContent.xaml
  45. 4 1
      PDF Office/Views/ViewContent.xaml

+ 12 - 4
PDF Office/CustomControl/CompositeControl/SlidContentPop.xaml.cs

@@ -32,23 +32,31 @@ namespace PDF_Office.CustomControl.CompositeControl
             bool changeFromDropBox = false;
             if(opacity == 0.25)
             {
+                if (OpacityDropBox.SelectedIndex != 0)
+                    changeFromDropBox = true;
+
                 OpacityDropBox.SelectedIndex = 0;
-                changeFromDropBox = true;
             }
             else if(opacity == 0.50)
             {
+                if (OpacityDropBox.SelectedIndex != 1)
+                    changeFromDropBox = true;
+
                 OpacityDropBox.SelectedIndex = 1;
-                changeFromDropBox = true;
             }
             else if(opacity == 0.75)
             {
+                if (OpacityDropBox.SelectedIndex != 2)
+                    changeFromDropBox = true;
+
                 OpacityDropBox.SelectedIndex = 2;
-                changeFromDropBox = true;
             }
             else if(opacity ==1)
             {
+                if (OpacityDropBox.SelectedIndex != 3)
+                    changeFromDropBox = true;
+
                 OpacityDropBox.SelectedIndex = 3;
-                changeFromDropBox = true;
             }
 
             if (changeFromDropBox == false)

+ 168 - 0
PDF Office/Model/AnnotPanel/AnnotColorList.cs

@@ -0,0 +1,168 @@
+using PDF_Office.CustomControl.CompositeControl;
+using PDF_Office.Helper;
+using PDF_Office.Properties;
+using PDFSettings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace PDF_Office.Model.AnnotPanel
+{
+    //注释的通用颜色集合
+    public class AnnotColorList
+    {
+        //用于高亮注释颜色
+        public static List<ColorItem> GetColorList(ColorSelectorType type)
+        {
+            ColorSelectorItem cacheColorItem = null;
+            if (Settings.Default.ColorSelectors == null)
+            {
+                Settings.Default.ColorSelectors = new ColorSelectorList();
+            }
+            else
+            {
+                //是否存在某类型的颜色列表
+                cacheColorItem = Settings.Default.ColorSelectors.FirstOrDefault(temp => temp.SelectorType == type);
+            }
+
+            List<ColorItem> Items = GetSpecifiedColorList(type);
+
+            if (cacheColorItem == null)
+            {
+                SaveInitSelector(Items, type);
+            }
+            else
+            {
+                //若存在,同步缓存里的数据
+                foreach (var item in Items)
+                {
+                    var selector = SettingHelper.GetColorSelectorItem(type, item.Index);
+                    if (selector != null)
+                    {
+                        item.Color = new SolidColorBrush(selector.color);
+                    }
+                }
+
+            }
+
+            return Items;
+        }
+
+        //缓存第一次初始化数据
+        private static void SaveInitSelector(List<ColorItem> colors, ColorSelectorType type)
+        {
+            if (Settings.Default.ColorSelectors == null)
+            {
+                Settings.Default.ColorSelectors = new ColorSelectorList();
+            }
+
+            foreach (var item in colors)
+            {
+                ColorSelectorItem colorSelectorItem = new ColorSelectorItem();
+                colorSelectorItem.color = (item.Color as SolidColorBrush).Color;
+                colorSelectorItem.SelectorType = type;
+                colorSelectorItem.Index = item.Index;
+                colorSelectorItem.IsChangedColor = false;
+                Settings.Default.ColorSelectors.Add(colorSelectorItem);
+            }
+
+            Settings.Default.Save();
+        }
+
+        //选取某类型第一次初始化(默认值)的颜色列表
+        private static List<ColorItem> GetSpecifiedColorList(ColorSelectorType type)
+        {
+            List<ColorItem> Items = null;
+            switch (type)
+            {
+                case ColorSelectorType.Highlight:
+                    Items = GetHighlightColorList();
+                    break;
+                case ColorSelectorType.Border:
+                    Items = GetBorderColorList();
+                    break;
+                case ColorSelectorType.Fill:
+                    Items = GetFillColorList();
+                    break;
+                case ColorSelectorType.Sticky:
+                    Items = GetStyleColorList();
+                    break;
+                default:
+                    Items = GetHighlightColorList();
+                    break;
+            }
+
+            return Items;
+
+        }
+
+        //用于高亮注释颜色
+        private static List<ColorItem> GetHighlightColorList()
+        {
+            List<ColorItem> HighlightItems = new List<ColorItem>();
+            HighlightItems = new List<ColorItem>();
+            ColorItem colorItem = new ColorItem(Color.FromArgb(0xff, 0xff, 0xC7, 0x00), 0);
+            HighlightItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0xFC, 0x1F, 0x1F), 1);
+            HighlightItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0x3E, 0xED, 0x92), 2);
+            HighlightItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0x47, 0xC8, 0xFF), 3);
+            HighlightItems.Add(colorItem);
+            return HighlightItems;
+        }
+
+
+        //用于边框颜色
+        private static List<ColorItem> GetBorderColorList()
+        {
+            List<ColorItem> BorderItems = new List<ColorItem>();
+            BorderItems = new List<ColorItem>();
+            ColorItem colorItem = new ColorItem(Color.FromArgb(0xff, 0xFC, 0x1F, 0x1F), 0);
+            BorderItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0x29, 0x53, 0x93), 1);
+            BorderItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0x1E, 0x89, 0x56), 2);
+            BorderItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0xB8, 0x08, 0xD4), 3);
+            BorderItems.Add(colorItem);
+            return BorderItems;
+        }
+
+        //用于填充颜色
+        private static List<ColorItem> GetFillColorList()
+        {
+            List<ColorItem> FillItems = new List<ColorItem>();
+            FillItems = new List<ColorItem>();
+            ColorItem colorItem = new ColorItem(Colors.Transparent, 0);
+            FillItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0xff, 0xff, 0xff), 1);
+            FillItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0xDF, 0xE1, 0xE4), 2);
+            FillItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0xFF, 0xF1, 0xC1), 3);
+            FillItems.Add(colorItem);
+            return FillItems;
+        }
+
+        //用于注释样式颜色:如便签样式颜色
+        private static List<ColorItem> GetStyleColorList()
+        {
+            List<ColorItem> StyleItems = new List<ColorItem>();
+            StyleItems = new List<ColorItem>();
+            ColorItem colorItem = new ColorItem(Color.FromArgb(0xff, 0xff, 0xD5, 0x73), 0);
+            StyleItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0xF8, 0x59, 0xC8), 1);
+            StyleItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0x1A, 0xD5, 0x98), 2);
+            StyleItems.Add(colorItem);
+            colorItem = new ColorItem(Color.FromArgb(0xff, 0x68, 0xAC, 0xF8), 3);
+            StyleItems.Add(colorItem);
+            return StyleItems;
+        }
+
+    }
+}

+ 14 - 160
PDF Office/Model/AnnotPanel/AnnotCommon.cs

@@ -134,12 +134,20 @@ namespace PDF_Office.Model.AnnotPanel
             set => SetProperty(ref _currentFontColor, value);
         }
 
-        //外部UI引用,判断是否选中实线、虚线、或都不选中
-        public string strDashStyle { get; private set; }
-        //VM赋值
-        public void SetStrDashStyle(string str)
+        //是否为实线
+        private bool _isSolidLine = true;
+        public bool IsSolidLine
         {
-            strDashStyle = str;
+            get { return _isSolidLine; }
+            set => SetProperty(ref _isSolidLine, value);
+        }
+
+        //是否为虚线
+        private bool _isDashLine = true;
+        public bool IsDashLine
+        {
+            get { return _isDashLine; }
+            set => SetProperty(ref _isDashLine, value);
         }
 
         //外部UI引用,其他:例如形状注释类型
@@ -149,6 +157,7 @@ namespace PDF_Office.Model.AnnotPanel
         {
             strOtherTag = str;
         }
+
         #endregion
 
         #region 多选
@@ -177,159 +186,4 @@ namespace PDF_Office.Model.AnnotPanel
 
     }
 
-    //注释的通用颜色集合
-    public class AnnotColorList
-    {
-        //用于高亮注释颜色
-        public static List<ColorItem> GetColorList(ColorSelectorType type)
-        {
-            ColorSelectorItem cacheColorItem = null;
-            if (Settings.Default.ColorSelectors == null)
-            {
-                Settings.Default.ColorSelectors = new ColorSelectorList();
-            }
-            else
-            {
-                //是否存在某类型的颜色列表
-                cacheColorItem = Settings.Default.ColorSelectors.FirstOrDefault(temp => temp.SelectorType == type);
-            }
-
-            List<ColorItem> Items = GetSpecifiedColorList(type);
-
-            if (cacheColorItem== null)
-            {
-                SaveInitSelector(Items, type);
-            }
-            else
-            {
-                //若存在,同步缓存里的数据
-                foreach(var item in Items)
-                {
-                    var selector = SettingHelper.GetColorSelectorItem(type, item.Index);
-                    if (selector != null)
-                    {
-                        item.Color = new SolidColorBrush(selector.color);
-                    }
-                }
-                
-            }
-
-            return Items;
-        }
-
-        //缓存第一次初始化数据
-        private static void SaveInitSelector(List<ColorItem> colors, ColorSelectorType type)
-        {
-            if (Settings.Default.ColorSelectors == null)
-            {
-                Settings.Default.ColorSelectors = new ColorSelectorList();
-            }
-
-            foreach (var item in colors)
-            {
-                ColorSelectorItem colorSelectorItem = new ColorSelectorItem();
-                colorSelectorItem.color = (item.Color as SolidColorBrush).Color;
-                colorSelectorItem.SelectorType = type;
-                colorSelectorItem.Index = item.Index;
-                colorSelectorItem.IsChangedColor = false;
-                Settings.Default.ColorSelectors.Add(colorSelectorItem);
-            }
-
-            Settings.Default.Save();
-        }
-
-        //选取某类型第一次初始化(默认值)的颜色列表
-        private static List<ColorItem> GetSpecifiedColorList(ColorSelectorType type)
-        {
-            List<ColorItem> Items = null;
-            switch (type)
-            {
-                case ColorSelectorType.Highlight:
-                    Items = GetHighlightColorList();
-                    break;
-                case ColorSelectorType.Border:
-                    Items = GetBorderColorList();
-                    break;
-                case ColorSelectorType.Fill:
-                    Items = GetFillColorList();
-                    break;
-                case ColorSelectorType.Sticky:
-                    Items = GetStyleColorList();
-                    break;
-                default:
-                    Items = GetHighlightColorList();
-                    break;
-            }
-
-            return Items;
-
-        }
-
-        //用于高亮注释颜色
-        private static List<ColorItem> GetHighlightColorList()
-        {
-            List<ColorItem> HighlightItems = new List<ColorItem>();
-            HighlightItems = new List<ColorItem>();
-            ColorItem colorItem = new ColorItem(Color.FromArgb(0xff, 0xff, 0xC7, 0x00), 0);
-            HighlightItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0xFC, 0x1F, 0x1F), 1);
-            HighlightItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0x3E, 0xED, 0x92), 2);
-            HighlightItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0x47, 0xC8, 0xFF), 3);
-            HighlightItems.Add(colorItem);
-            return HighlightItems;
-        }
-
-
-        //用于边框颜色
-        private static List<ColorItem> GetBorderColorList()
-        {
-            List<ColorItem> BorderItems = new List<ColorItem>();
-            BorderItems = new List<ColorItem>();
-            ColorItem colorItem = new ColorItem(Color.FromArgb(0xff, 0xFC, 0x1F, 0x1F), 0);
-            BorderItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0x29, 0x53, 0x93), 1);
-            BorderItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0x1E, 0x89, 0x56), 2);
-            BorderItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0xB8, 0x08, 0xD4), 3);
-            BorderItems.Add(colorItem);
-            return BorderItems;
-        }
-
-        //用于填充颜色
-        private static List<ColorItem> GetFillColorList()
-        {
-            List<ColorItem> FillItems = new List<ColorItem>();
-            FillItems = new List<ColorItem>();
-            ColorItem colorItem = new ColorItem(Colors.Transparent, 0);
-            FillItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0xff, 0xff, 0xff), 1);
-            FillItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0xDF, 0xE1, 0xE4), 2);
-            FillItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0xFF, 0xF1, 0xC1), 3);
-            FillItems.Add(colorItem);
-            return FillItems;
-        }
-
-        //用于注释样式颜色:如便签样式颜色
-        private static List<ColorItem> GetStyleColorList()
-        {
-            List<ColorItem> StyleItems = new List<ColorItem>();
-            StyleItems = new List<ColorItem>();
-            ColorItem colorItem = new ColorItem(Color.FromArgb(0xff, 0xff, 0xD5, 0x73), 0);
-            StyleItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0xF8, 0x59, 0xC8), 1);
-            StyleItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0x1A, 0xD5, 0x98), 2);
-            StyleItems.Add(colorItem);
-            colorItem = new ColorItem(Color.FromArgb(0xff, 0x68, 0xAC, 0xF8), 3);
-            StyleItems.Add(colorItem);
-            return StyleItems;
-        }
-
-    }
-
 }

+ 163 - 0
PDF Office/MultilingualResources/PDF Office.en.xlf

@@ -940,6 +940,169 @@ Drag files to reorder as you need.</target>
           <source>Remove</source>
           <target state="new">Remove</target>
         </trans-unit>
+        <trans-unit id="ImageToPDF_AddFile" translate="yes" xml:space="preserve">
+          <source>Add File</source>
+          <target state="new">Add File</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_AddFolder" translate="yes" xml:space="preserve">
+          <source>Add Folder</source>
+          <target state="new">Add Folder</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_FileName" translate="yes" xml:space="preserve">
+          <source>File Name</source>
+          <target state="new">File Name</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">顶部标题</note>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Size" translate="yes" xml:space="preserve">
+          <source>Size</source>
+          <target state="new">Size</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Status" translate="yes" xml:space="preserve">
+          <source>Status</source>
+          <target state="new">Status</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Title" translate="yes" xml:space="preserve">
+          <source>Image To PDF</source>
+          <target state="new">Image To PDF</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Create" translate="yes" xml:space="preserve">
+          <source>Creat PDF for each image</source>
+          <target state="new">Creat PDF for each image</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_EmptyContext" translate="yes" xml:space="preserve">
+          <source>Select files
+Drop files here or Click “Add Files” in bottom right corner.</source>
+          <target state="new">Select files
+Drop files here or Click “Add Files” in bottom right corner.</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_ExportTitle" translate="yes" xml:space="preserve">
+          <source>Export</source>
+          <target state="new">Export</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_MenuDelete" translate="yes" xml:space="preserve">
+          <source>Delete</source>
+          <target state="new">Delete</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_MenuShowFolder" translate="yes" xml:space="preserve">
+          <source>Show in Folder</source>
+          <target state="new">Show in Folder</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Merge" translate="yes" xml:space="preserve">
+          <source>Merge as one PDF document</source>
+          <target state="new">Merge as one PDF document</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Settings" translate="yes" xml:space="preserve">
+          <source>Settings</source>
+          <target state="new">Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_BlackAndWhite" translate="yes" xml:space="preserve">
+          <source>Black and white</source>
+          <target state="new">Black and white</target>
+        </trans-unit>
+        <trans-unit id="Print_Copies" translate="yes" xml:space="preserve">
+          <source>Copies</source>
+          <target state="new">Copies</target>
+        </trans-unit>
+        <trans-unit id="Print_Orientation" translate="yes" xml:space="preserve">
+          <source>Orientation:</source>
+          <target state="new">Orientation:</target>
+        </trans-unit>
+        <trans-unit id="Print_PageSettings" translate="yes" xml:space="preserve">
+          <source>Page Settings</source>
+          <target state="new">Page Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_PrintContent" translate="yes" xml:space="preserve">
+          <source>Print Contents:</source>
+          <target state="new">Print Contents:</target>
+        </trans-unit>
+        <trans-unit id="Print_Printer" translate="yes" xml:space="preserve">
+          <source>Printer</source>
+          <target state="new">Printer</target>
+        </trans-unit>
+        <trans-unit id="Print_PrintSettings" translate="yes" xml:space="preserve">
+          <source>Print Settings</source>
+          <target state="new">Print Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_ReversePages" translate="yes" xml:space="preserve">
+          <source>Reverse pages</source>
+          <target state="new">Reverse pages</target>
+        </trans-unit>
+        <trans-unit id="Print_Title" translate="yes" xml:space="preserve">
+          <source>Print</source>
+          <target state="new">Print</target>
+        </trans-unit>
+        <trans-unit id="Convert_No" translate="yes" xml:space="preserve">
+          <source>Cancel</source>
+          <target state="new">Cancel</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToCSVTitle" translate="yes" xml:space="preserve">
+          <source>PDF To CSV</source>
+          <target state="new">PDF To CSV</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToExcelTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Excel</source>
+          <target state="new">PDF To Excel</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToHTMLTitle" translate="yes" xml:space="preserve">
+          <source>PDF To HTML</source>
+          <target state="new">PDF To HTML</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Image</source>
+          <target state="new">PDF To Image</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToPPTTitle" translate="yes" xml:space="preserve">
+          <source>PDF To PPT</source>
+          <target state="new">PDF To PPT</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToRTFTitle" translate="yes" xml:space="preserve">
+          <source>PDF To RTF</source>
+          <target state="new">PDF To RTF</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToTextTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Text</source>
+          <target state="new">PDF To Text</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToWordTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Word</source>
+          <target state="new">PDF To Word</target>
+        </trans-unit>
+        <trans-unit id="Convert_Yes" translate="yes" xml:space="preserve">
+          <source>Convert</source>
+          <target state="new">Convert</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageBMP" translate="yes" xml:space="preserve">
+          <source>BMP</source>
+          <target state="new">BMP</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageGIF" translate="yes" xml:space="preserve">
+          <source>GIF</source>
+          <target state="new">GIF</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPEG" translate="yes" xml:space="preserve">
+          <source>JPEG</source>
+          <target state="new">JPEG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPEG-2000" translate="yes" xml:space="preserve">
+          <source>JPEG-2000</source>
+          <target state="new">JPEG-2000</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPG" translate="yes" xml:space="preserve">
+          <source>JPG</source>
+          <target state="new">JPG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImagePNG" translate="yes" xml:space="preserve">
+          <source>PNG</source>
+          <target state="new">PNG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTGA" translate="yes" xml:space="preserve">
+          <source>TGA</source>
+          <target state="new">TGA</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTIFF" translate="yes" xml:space="preserve">
+          <source>TIFF</source>
+          <target state="new">TIFF</target>
+        </trans-unit>
       </group>
     </body>
   </file>

+ 163 - 0
PDF Office/MultilingualResources/PDF Office.zh-Hans.xlf

@@ -940,6 +940,169 @@ Drag files to reorder as you need.</target>
           <source>Remove</source>
           <target state="new">Remove</target>
         </trans-unit>
+        <trans-unit id="ImageToPDF_AddFile" translate="yes" xml:space="preserve">
+          <source>Add File</source>
+          <target state="new">Add File</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_AddFolder" translate="yes" xml:space="preserve">
+          <source>Add Folder</source>
+          <target state="new">Add Folder</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_FileName" translate="yes" xml:space="preserve">
+          <source>File Name</source>
+          <target state="new">File Name</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">顶部标题</note>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Size" translate="yes" xml:space="preserve">
+          <source>Size</source>
+          <target state="new">Size</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Status" translate="yes" xml:space="preserve">
+          <source>Status</source>
+          <target state="new">Status</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Title" translate="yes" xml:space="preserve">
+          <source>Image To PDF</source>
+          <target state="new">Image To PDF</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Create" translate="yes" xml:space="preserve">
+          <source>Creat PDF for each image</source>
+          <target state="new">Creat PDF for each image</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_EmptyContext" translate="yes" xml:space="preserve">
+          <source>Select files
+Drop files here or Click “Add Files” in bottom right corner.</source>
+          <target state="new">Select files
+Drop files here or Click “Add Files” in bottom right corner.</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_ExportTitle" translate="yes" xml:space="preserve">
+          <source>Export</source>
+          <target state="new">Export</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_MenuDelete" translate="yes" xml:space="preserve">
+          <source>Delete</source>
+          <target state="new">Delete</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_MenuShowFolder" translate="yes" xml:space="preserve">
+          <source>Show in Folder</source>
+          <target state="new">Show in Folder</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Merge" translate="yes" xml:space="preserve">
+          <source>Merge as one PDF document</source>
+          <target state="new">Merge as one PDF document</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Settings" translate="yes" xml:space="preserve">
+          <source>Settings</source>
+          <target state="new">Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_BlackAndWhite" translate="yes" xml:space="preserve">
+          <source>Black and white</source>
+          <target state="new">Black and white</target>
+        </trans-unit>
+        <trans-unit id="Print_Copies" translate="yes" xml:space="preserve">
+          <source>Copies</source>
+          <target state="new">Copies</target>
+        </trans-unit>
+        <trans-unit id="Print_Orientation" translate="yes" xml:space="preserve">
+          <source>Orientation:</source>
+          <target state="new">Orientation:</target>
+        </trans-unit>
+        <trans-unit id="Print_PageSettings" translate="yes" xml:space="preserve">
+          <source>Page Settings</source>
+          <target state="new">Page Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_PrintContent" translate="yes" xml:space="preserve">
+          <source>Print Contents:</source>
+          <target state="new">Print Contents:</target>
+        </trans-unit>
+        <trans-unit id="Print_Printer" translate="yes" xml:space="preserve">
+          <source>Printer</source>
+          <target state="new">Printer</target>
+        </trans-unit>
+        <trans-unit id="Print_PrintSettings" translate="yes" xml:space="preserve">
+          <source>Print Settings</source>
+          <target state="new">Print Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_ReversePages" translate="yes" xml:space="preserve">
+          <source>Reverse pages</source>
+          <target state="new">Reverse pages</target>
+        </trans-unit>
+        <trans-unit id="Print_Title" translate="yes" xml:space="preserve">
+          <source>Print</source>
+          <target state="new">Print</target>
+        </trans-unit>
+        <trans-unit id="Convert_No" translate="yes" xml:space="preserve">
+          <source>Cancel</source>
+          <target state="new">Cancel</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToCSVTitle" translate="yes" xml:space="preserve">
+          <source>PDF To CSV</source>
+          <target state="new">PDF To CSV</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToExcelTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Excel</source>
+          <target state="new">PDF To Excel</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToHTMLTitle" translate="yes" xml:space="preserve">
+          <source>PDF To HTML</source>
+          <target state="new">PDF To HTML</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Image</source>
+          <target state="new">PDF To Image</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToPPTTitle" translate="yes" xml:space="preserve">
+          <source>PDF To PPT</source>
+          <target state="new">PDF To PPT</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToRTFTitle" translate="yes" xml:space="preserve">
+          <source>PDF To RTF</source>
+          <target state="new">PDF To RTF</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToTextTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Text</source>
+          <target state="new">PDF To Text</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToWordTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Word</source>
+          <target state="new">PDF To Word</target>
+        </trans-unit>
+        <trans-unit id="Convert_Yes" translate="yes" xml:space="preserve">
+          <source>Convert</source>
+          <target state="new">Convert</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageBMP" translate="yes" xml:space="preserve">
+          <source>BMP</source>
+          <target state="new">BMP</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageGIF" translate="yes" xml:space="preserve">
+          <source>GIF</source>
+          <target state="new">GIF</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPEG" translate="yes" xml:space="preserve">
+          <source>JPEG</source>
+          <target state="new">JPEG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPEG-2000" translate="yes" xml:space="preserve">
+          <source>JPEG-2000</source>
+          <target state="new">JPEG-2000</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPG" translate="yes" xml:space="preserve">
+          <source>JPG</source>
+          <target state="new">JPG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImagePNG" translate="yes" xml:space="preserve">
+          <source>PNG</source>
+          <target state="new">PNG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTGA" translate="yes" xml:space="preserve">
+          <source>TGA</source>
+          <target state="new">TGA</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTIFF" translate="yes" xml:space="preserve">
+          <source>TIFF</source>
+          <target state="new">TIFF</target>
+        </trans-unit>
       </group>
     </body>
   </file>

+ 163 - 0
PDF Office/MultilingualResources/PDF Office.zh-Hant.xlf

@@ -940,6 +940,169 @@ Drag files to reorder as you need.</target>
           <source>Remove</source>
           <target state="new">Remove</target>
         </trans-unit>
+        <trans-unit id="ImageToPDF_AddFile" translate="yes" xml:space="preserve">
+          <source>Add File</source>
+          <target state="new">Add File</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_AddFolder" translate="yes" xml:space="preserve">
+          <source>Add Folder</source>
+          <target state="new">Add Folder</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_FileName" translate="yes" xml:space="preserve">
+          <source>File Name</source>
+          <target state="new">File Name</target>
+          <note from="MultilingualBuild" annotates="source" priority="2">顶部标题</note>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Size" translate="yes" xml:space="preserve">
+          <source>Size</source>
+          <target state="new">Size</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Status" translate="yes" xml:space="preserve">
+          <source>Status</source>
+          <target state="new">Status</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Title" translate="yes" xml:space="preserve">
+          <source>Image To PDF</source>
+          <target state="new">Image To PDF</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Create" translate="yes" xml:space="preserve">
+          <source>Creat PDF for each image</source>
+          <target state="new">Creat PDF for each image</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_EmptyContext" translate="yes" xml:space="preserve">
+          <source>Select files
+Drop files here or Click “Add Files” in bottom right corner.</source>
+          <target state="new">Select files
+Drop files here or Click “Add Files” in bottom right corner.</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_ExportTitle" translate="yes" xml:space="preserve">
+          <source>Export</source>
+          <target state="new">Export</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_MenuDelete" translate="yes" xml:space="preserve">
+          <source>Delete</source>
+          <target state="new">Delete</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_MenuShowFolder" translate="yes" xml:space="preserve">
+          <source>Show in Folder</source>
+          <target state="new">Show in Folder</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Merge" translate="yes" xml:space="preserve">
+          <source>Merge as one PDF document</source>
+          <target state="new">Merge as one PDF document</target>
+        </trans-unit>
+        <trans-unit id="ImageToPDF_Settings" translate="yes" xml:space="preserve">
+          <source>Settings</source>
+          <target state="new">Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_BlackAndWhite" translate="yes" xml:space="preserve">
+          <source>Black and white</source>
+          <target state="new">Black and white</target>
+        </trans-unit>
+        <trans-unit id="Print_Copies" translate="yes" xml:space="preserve">
+          <source>Copies</source>
+          <target state="new">Copies</target>
+        </trans-unit>
+        <trans-unit id="Print_Orientation" translate="yes" xml:space="preserve">
+          <source>Orientation:</source>
+          <target state="new">Orientation:</target>
+        </trans-unit>
+        <trans-unit id="Print_PageSettings" translate="yes" xml:space="preserve">
+          <source>Page Settings</source>
+          <target state="new">Page Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_PrintContent" translate="yes" xml:space="preserve">
+          <source>Print Contents:</source>
+          <target state="new">Print Contents:</target>
+        </trans-unit>
+        <trans-unit id="Print_Printer" translate="yes" xml:space="preserve">
+          <source>Printer</source>
+          <target state="new">Printer</target>
+        </trans-unit>
+        <trans-unit id="Print_PrintSettings" translate="yes" xml:space="preserve">
+          <source>Print Settings</source>
+          <target state="new">Print Settings</target>
+        </trans-unit>
+        <trans-unit id="Print_ReversePages" translate="yes" xml:space="preserve">
+          <source>Reverse pages</source>
+          <target state="new">Reverse pages</target>
+        </trans-unit>
+        <trans-unit id="Print_Title" translate="yes" xml:space="preserve">
+          <source>Print</source>
+          <target state="new">Print</target>
+        </trans-unit>
+        <trans-unit id="Convert_No" translate="yes" xml:space="preserve">
+          <source>Cancel</source>
+          <target state="new">Cancel</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToCSVTitle" translate="yes" xml:space="preserve">
+          <source>PDF To CSV</source>
+          <target state="new">PDF To CSV</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToExcelTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Excel</source>
+          <target state="new">PDF To Excel</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToHTMLTitle" translate="yes" xml:space="preserve">
+          <source>PDF To HTML</source>
+          <target state="new">PDF To HTML</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Image</source>
+          <target state="new">PDF To Image</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToPPTTitle" translate="yes" xml:space="preserve">
+          <source>PDF To PPT</source>
+          <target state="new">PDF To PPT</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToRTFTitle" translate="yes" xml:space="preserve">
+          <source>PDF To RTF</source>
+          <target state="new">PDF To RTF</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToTextTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Text</source>
+          <target state="new">PDF To Text</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToWordTitle" translate="yes" xml:space="preserve">
+          <source>PDF To Word</source>
+          <target state="new">PDF To Word</target>
+        </trans-unit>
+        <trans-unit id="Convert_Yes" translate="yes" xml:space="preserve">
+          <source>Convert</source>
+          <target state="new">Convert</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageBMP" translate="yes" xml:space="preserve">
+          <source>BMP</source>
+          <target state="new">BMP</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageGIF" translate="yes" xml:space="preserve">
+          <source>GIF</source>
+          <target state="new">GIF</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPEG" translate="yes" xml:space="preserve">
+          <source>JPEG</source>
+          <target state="new">JPEG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPEG-2000" translate="yes" xml:space="preserve">
+          <source>JPEG-2000</source>
+          <target state="new">JPEG-2000</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageJPG" translate="yes" xml:space="preserve">
+          <source>JPG</source>
+          <target state="new">JPG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImagePNG" translate="yes" xml:space="preserve">
+          <source>PNG</source>
+          <target state="new">PNG</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTGA" translate="yes" xml:space="preserve">
+          <source>TGA</source>
+          <target state="new">TGA</target>
+        </trans-unit>
+        <trans-unit id="Convert_PDFToImageTIFF" translate="yes" xml:space="preserve">
+          <source>TIFF</source>
+          <target state="new">TIFF</target>
+        </trans-unit>
       </group>
     </body>
   </file>

+ 1 - 0
PDF Office/PDF Office.csproj

@@ -352,6 +352,7 @@
     <Compile Include="Helper\SettingHelper.cs" />
     <Compile Include="Helper\ToolMethod.cs" />
     <Compile Include="Helper\UpdateAttributeHelper.cs" />
+    <Compile Include="Model\AnnotPanel\AnnotColorList.cs" />
     <Compile Include="Model\AnnotPanel\AnnotCommon.cs" />
     <Compile Include="Model\AnnotPanel\FontBoard.cs" />
     <Compile Include="Model\AnnotPanel\Signature.cs" />

+ 361 - 0
PDF Office/Strings/MainPage/MainPage.Designer.cs

@@ -393,6 +393,168 @@ namespace PDF_Office.Strings.MainPage {
             }
         }
         
+        /// <summary>
+        ///   查找类似 Cancel 的本地化字符串。
+        /// </summary>
+        public static string Convert_No {
+            get {
+                return ResourceManager.GetString("Convert_No", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To CSV 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToCSVTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToCSVTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To Excel 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToExcelTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToExcelTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To HTML 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToHTMLTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToHTMLTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 BMP 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageBMP {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageBMP", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 GIF 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageGIF {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageGIF", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 JPEG 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageJPEG {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageJPEG", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 JPEG-2000 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageJPEG_2000 {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageJPEG-2000", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 JPG 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageJPG {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageJPG", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PNG 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImagePNG {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImagePNG", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 TGA 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageTGA {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageTGA", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 TIFF 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageTIFF {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageTIFF", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To Image 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToImageTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToImageTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To PPT 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToPPTTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToPPTTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To RTF 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToRTFTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToRTFTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To Text 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToTextTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToTextTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 PDF To Word 的本地化字符串。
+        /// </summary>
+        public static string Convert_PDFToWordTitle {
+            get {
+                return ResourceManager.GetString("Convert_PDFToWordTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Convert 的本地化字符串。
+        /// </summary>
+        public static string Convert_Yes {
+            get {
+                return ResourceManager.GetString("Convert_Yes", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   查找类似 Fill 的本地化字符串。
         /// </summary>
@@ -447,6 +609,124 @@ namespace PDF_Office.Strings.MainPage {
             }
         }
         
+        /// <summary>
+        ///   查找类似 Add File 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_AddFile {
+            get {
+                return ResourceManager.GetString("ImageToPDF_AddFile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Add Folder 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_AddFolder {
+            get {
+                return ResourceManager.GetString("ImageToPDF_AddFolder", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Creat PDF for each image 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_Create {
+            get {
+                return ResourceManager.GetString("ImageToPDF_Create", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Select files
+        ///Drop files here or Click “Add Files” in bottom right corner. 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_EmptyContext {
+            get {
+                return ResourceManager.GetString("ImageToPDF_EmptyContext", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Export 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_ExportTitle {
+            get {
+                return ResourceManager.GetString("ImageToPDF_ExportTitle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 File Name 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_FileName {
+            get {
+                return ResourceManager.GetString("ImageToPDF_FileName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Delete 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_MenuDelete {
+            get {
+                return ResourceManager.GetString("ImageToPDF_MenuDelete", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Show in Folder 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_MenuShowFolder {
+            get {
+                return ResourceManager.GetString("ImageToPDF_MenuShowFolder", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Merge as one PDF document 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_Merge {
+            get {
+                return ResourceManager.GetString("ImageToPDF_Merge", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Settings 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_Settings {
+            get {
+                return ResourceManager.GetString("ImageToPDF_Settings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Size 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_Size {
+            get {
+                return ResourceManager.GetString("ImageToPDF_Size", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Status 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_Status {
+            get {
+                return ResourceManager.GetString("ImageToPDF_Status", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Image To PDF 的本地化字符串。
+        /// </summary>
+        public static string ImageToPDF_Title {
+            get {
+                return ResourceManager.GetString("ImageToPDF_Title", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   查找类似 Page 的本地化字符串。
         /// </summary>
@@ -854,6 +1134,87 @@ namespace PDF_Office.Strings.MainPage {
             }
         }
         
+        /// <summary>
+        ///   查找类似 Black and white 的本地化字符串。
+        /// </summary>
+        public static string Print_BlackAndWhite {
+            get {
+                return ResourceManager.GetString("Print_BlackAndWhite", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Copies 的本地化字符串。
+        /// </summary>
+        public static string Print_Copies {
+            get {
+                return ResourceManager.GetString("Print_Copies", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Orientation: 的本地化字符串。
+        /// </summary>
+        public static string Print_Orientation {
+            get {
+                return ResourceManager.GetString("Print_Orientation", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Page Settings 的本地化字符串。
+        /// </summary>
+        public static string Print_PageSettings {
+            get {
+                return ResourceManager.GetString("Print_PageSettings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Print Contents: 的本地化字符串。
+        /// </summary>
+        public static string Print_PrintContent {
+            get {
+                return ResourceManager.GetString("Print_PrintContent", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Printer 的本地化字符串。
+        /// </summary>
+        public static string Print_Printer {
+            get {
+                return ResourceManager.GetString("Print_Printer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Print Settings 的本地化字符串。
+        /// </summary>
+        public static string Print_PrintSettings {
+            get {
+                return ResourceManager.GetString("Print_PrintSettings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Reverse pages 的本地化字符串。
+        /// </summary>
+        public static string Print_ReversePages {
+            get {
+                return ResourceManager.GetString("Print_ReversePages", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似 Print 的本地化字符串。
+        /// </summary>
+        public static string Print_Title {
+            get {
+                return ResourceManager.GetString("Print_Title", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   查找类似 Are you sure you want to remove the security settings for”{0}” documents? 的本地化字符串。
         /// </summary>

+ 122 - 0
PDF Office/Strings/MainPage/MainPage.resx

@@ -232,6 +232,60 @@
   <data name="ContentSelection_ZoomArea" xml:space="preserve">
     <value>Zoom to Selected Area</value>
   </data>
+  <data name="Convert_No" xml:space="preserve">
+    <value>Cancel</value>
+  </data>
+  <data name="Convert_PDFToCSVTitle" xml:space="preserve">
+    <value>PDF To CSV</value>
+  </data>
+  <data name="Convert_PDFToExcelTitle" xml:space="preserve">
+    <value>PDF To Excel</value>
+  </data>
+  <data name="Convert_PDFToHTMLTitle" xml:space="preserve">
+    <value>PDF To HTML</value>
+  </data>
+  <data name="Convert_PDFToImageBMP" xml:space="preserve">
+    <value>BMP</value>
+  </data>
+  <data name="Convert_PDFToImageGIF" xml:space="preserve">
+    <value>GIF</value>
+  </data>
+  <data name="Convert_PDFToImageJPEG" xml:space="preserve">
+    <value>JPEG</value>
+  </data>
+  <data name="Convert_PDFToImageJPEG-2000" xml:space="preserve">
+    <value>JPEG-2000</value>
+  </data>
+  <data name="Convert_PDFToImageJPG" xml:space="preserve">
+    <value>JPG</value>
+  </data>
+  <data name="Convert_PDFToImagePNG" xml:space="preserve">
+    <value>PNG</value>
+  </data>
+  <data name="Convert_PDFToImageTGA" xml:space="preserve">
+    <value>TGA</value>
+  </data>
+  <data name="Convert_PDFToImageTIFF" xml:space="preserve">
+    <value>TIFF</value>
+  </data>
+  <data name="Convert_PDFToImageTitle" xml:space="preserve">
+    <value>PDF To Image</value>
+  </data>
+  <data name="Convert_PDFToPPTTitle" xml:space="preserve">
+    <value>PDF To PPT</value>
+  </data>
+  <data name="Convert_PDFToRTFTitle" xml:space="preserve">
+    <value>PDF To RTF</value>
+  </data>
+  <data name="Convert_PDFToTextTitle" xml:space="preserve">
+    <value>PDF To Text</value>
+  </data>
+  <data name="Convert_PDFToWordTitle" xml:space="preserve">
+    <value>PDF To Word</value>
+  </data>
+  <data name="Convert_Yes" xml:space="preserve">
+    <value>Convert</value>
+  </data>
   <data name="FreeText_Fill" xml:space="preserve">
     <value>Fill</value>
   </data>
@@ -251,6 +305,47 @@
   <data name="Highlight_Title" xml:space="preserve">
     <value>Highlight</value>
   </data>
+  <data name="ImageToPDF_AddFile" xml:space="preserve">
+    <value>Add File</value>
+  </data>
+  <data name="ImageToPDF_AddFolder" xml:space="preserve">
+    <value>Add Folder</value>
+  </data>
+  <data name="ImageToPDF_Create" xml:space="preserve">
+    <value>Creat PDF for each image</value>
+  </data>
+  <data name="ImageToPDF_EmptyContext" xml:space="preserve">
+    <value>Select files
+Drop files here or Click “Add Files” in bottom right corner.</value>
+  </data>
+  <data name="ImageToPDF_ExportTitle" xml:space="preserve">
+    <value>Export</value>
+  </data>
+  <data name="ImageToPDF_FileName" xml:space="preserve">
+    <value>File Name</value>
+    <comment>顶部标题</comment>
+  </data>
+  <data name="ImageToPDF_MenuDelete" xml:space="preserve">
+    <value>Delete</value>
+  </data>
+  <data name="ImageToPDF_MenuShowFolder" xml:space="preserve">
+    <value>Show in Folder</value>
+  </data>
+  <data name="ImageToPDF_Merge" xml:space="preserve">
+    <value>Merge as one PDF document</value>
+  </data>
+  <data name="ImageToPDF_Settings" xml:space="preserve">
+    <value>Settings</value>
+  </data>
+  <data name="ImageToPDF_Size" xml:space="preserve">
+    <value>Size</value>
+  </data>
+  <data name="ImageToPDF_Status" xml:space="preserve">
+    <value>Status</value>
+  </data>
+  <data name="ImageToPDF_Title" xml:space="preserve">
+    <value>Image To PDF</value>
+  </data>
   <data name="Link_Page" xml:space="preserve">
     <value>Page</value>
   </data>
@@ -397,6 +492,33 @@ Drag files to reorder as you need.</value>
     <value>Recently Used</value>
     <comment>调色板-最近使用的颜色</comment>
   </data>
+  <data name="Print_BlackAndWhite" xml:space="preserve">
+    <value>Black and white</value>
+  </data>
+  <data name="Print_Copies" xml:space="preserve">
+    <value>Copies</value>
+  </data>
+  <data name="Print_Orientation" xml:space="preserve">
+    <value>Orientation:</value>
+  </data>
+  <data name="Print_PageSettings" xml:space="preserve">
+    <value>Page Settings</value>
+  </data>
+  <data name="Print_PrintContent" xml:space="preserve">
+    <value>Print Contents:</value>
+  </data>
+  <data name="Print_Printer" xml:space="preserve">
+    <value>Printer</value>
+  </data>
+  <data name="Print_PrintSettings" xml:space="preserve">
+    <value>Print Settings</value>
+  </data>
+  <data name="Print_ReversePages" xml:space="preserve">
+    <value>Reverse pages</value>
+  </data>
+  <data name="Print_Title" xml:space="preserve">
+    <value>Print</value>
+  </data>
   <data name="RemovePassword_Context" xml:space="preserve">
     <value>Are you sure you want to remove the security settings for”{0}” documents?</value>
   </data>

+ 45 - 0
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterCSVDialogViewModel.cs

@@ -26,6 +26,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 {
     public class ConverterCSVDialogViewModel : BindableBase,IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToCSVTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
         public string Title => "";
 
         public event Action<IDialogResult> RequestClose;
@@ -72,6 +116,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public ConverterCSVDialogViewModel(IDialogService dialogService)
         {
+            IntString();
             CancelCommand = new DelegateCommand(cancel);
             ConverterCommnad = new DelegateCommand(converter);
             RadioButtonCommand = new DelegateCommand<string>(radiobutton);

+ 45 - 0
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterHTMLDialogViewModel.cs

@@ -21,6 +21,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
     public class ConverterHTMLDialogViewModel : BindableBase, IDialogAware
     {
 
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToHTMLTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
         public string Title => "";
 
         public event Action<IDialogResult> RequestClose;
@@ -86,6 +130,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public ConverterHTMLDialogViewModel(IDialogService dialogService)
         {
+            IntString();
             CancelCommand = new DelegateCommand(cancel);
             ConverterCommnad = new DelegateCommand(converter);
             CmbPageSelectionChanged = new DelegateCommand<object>(CmbPageSelectionChangedEvent);

+ 53 - 8
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterImgDialogViewModel.cs

@@ -22,6 +22,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 {
     public class ConverterImgDialogViewModel : BindableBase, IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToImageTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
 
         public string Title => "";
 
@@ -86,14 +130,14 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         private void SetImageTypeOrigin()
         {
-            this.ImageTypeFamily.Add("JPEG");
-            this.ImageTypeFamily.Add("JPG");
-            this.ImageTypeFamily.Add("PNG");
-            this.ImageTypeFamily.Add("GIF");
-            this.ImageTypeFamily.Add("TIFF");
-            this.ImageTypeFamily.Add("TGA");
-            this.ImageTypeFamily.Add("BMP");
-            this.ImageTypeFamily.Add("JPEG-2000");
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageJPEG"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageJPG"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImagePNG"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageGIF"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageTIFF"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageTGA"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageBMP"));
+            this.ImageTypeFamily.Add(App.MainPageLoader.GetString("Convert_PDFToImageJPEG-2000"));
         }
 
         public List<string> ImageDPIFamily { set; get; } = new List<string>();
@@ -123,6 +167,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public ConverterImgDialogViewModel(IDialogService dialogService)
         {
+            IntString();
             CancelCommand = new DelegateCommand(cancel);
             ConverterCommnad = new DelegateCommand(converter);
             CmbPageSelectionChanged = new DelegateCommand<object>(CmbPageSelectionChangedEvent);

+ 45 - 0
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterPPTDialogViewModel.cs

@@ -20,6 +20,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 {
     public class ConverterPPTDialogViewModel : BindableBase, IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToPPTTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
 
         public string Title => "";
 
@@ -93,6 +137,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             CmbPageTextChanged = new DelegateCommand<object>(CmbPageTextChangedEvent);
             BatchConverterCommand = new DelegateCommand(BatchConverter);
             dialogs = dialogService;
+            IntString();
         }
         #region 逻辑函数
         private void cancel()

+ 45 - 0
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterRTFDialogViewModel.cs

@@ -21,6 +21,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
     public class ConverterRTFDialogViewModel : BindableBase, IDialogAware
     {
 
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToRTFTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
         public string Title => "";
 
         public event Action<IDialogResult> RequestClose;
@@ -91,6 +135,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             CmbPageTextChanged = new DelegateCommand<object>(CmbPageTextChangedEvent);
             BatchConverterCommand = new DelegateCommand(BatchConverter);
             dialogs = dialogService;
+            IntString();
         }
 
         #region 逻辑函数

+ 45 - 0
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterTextDialogViewModel.cs

@@ -21,6 +21,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 {
     public class ConverterTextDialogViewModel : BindableBase, IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToTextTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
 
         public string Title => "";
 
@@ -87,6 +131,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public ConverterTextDialogViewModel(IDialogService dialogService)
         {
+            IntString();
             CancelCommand = new DelegateCommand(cancel);
             ConverterCommnad = new DelegateCommand(converter);
             CmbPageSelectionChanged = new DelegateCommand<object>(CmbPageSelectionChangedEvent);

+ 45 - 0
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterWordDialogViewModel.cs

@@ -21,6 +21,50 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 {
     public class ConverterWordDialogViewModel : BindableBase, IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_yes;
+
+        public string T_YES
+        {
+            get { return T_yes; }
+            set
+            {
+                SetProperty(ref T_yes, value);
+            }
+        }
+
+        private string T_no;
+
+        public string T_No
+        {
+            get { return T_no; }
+            set
+            {
+                SetProperty(ref T_no, value);
+            }
+        }
+
+
+        private void IntString()
+        {
+            T_Title = App.MainPageLoader.GetString("Convert_PDFToWordTitle");
+            T_YES = App.MainPageLoader.GetString("Convert_Yes");
+            T_No = App.MainPageLoader.GetString("Convert_No");
+        }
+
+        #endregion
 
         public string Title => "";
 
@@ -96,6 +140,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             CmbPageTextChanged = new DelegateCommand<object>(CmbPageTextChangedEvent);
             BatchConverterCommand = new DelegateCommand(BatchConverter);
             dialogs = dialogService;
+            IntString();
         }
         #region 逻辑函数
         private void cancel()

+ 149 - 37
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePictureToPDFDialogViewModel.cs

@@ -21,6 +21,110 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
 {
     public class HomePagePictureToPDFDialogViewModel : BindableBase, IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_addFolder;
+
+        public string T_AddFolder
+        {
+            get { return T_addFolder; }
+            set
+            {
+                SetProperty(ref T_addFolder, value);
+            }
+        }
+
+        private string T_addFile;
+
+        public string T_AddFile
+        {
+            get { return T_addFile; }
+            set
+            {
+                SetProperty(ref T_addFile, value);
+            }
+        }
+
+        private string T_emptyContext;
+
+        public string T_EmptyContext
+        {
+            get { return T_emptyContext; }
+            set
+            {
+                SetProperty(ref T_emptyContext, value);
+            }
+        }
+
+        private string T_settings;
+
+        public string T_Settings
+        {
+            get { return T_settings; }
+            set
+            {
+                SetProperty(ref T_settings, value);
+            }
+        }
+
+        private string T_exportTitle;
+
+        public string T_ExportTitle
+        {
+            get { return T_exportTitle; }
+            set
+            {
+                SetProperty(ref T_exportTitle, value);
+            }
+        }
+
+        private string T_create;
+
+        public string T_Create
+        {
+            get { return T_create; }
+            set
+            {
+                SetProperty(ref T_create, value);
+            }
+        }
+
+        private string T_merge;
+
+        public string T_Merge
+        {
+            get { return T_merge; }
+            set
+            {
+                SetProperty(ref T_merge, value);
+            }
+        }
+
+        private void InitString()
+        {
+            T_Title = App.MainPageLoader.GetString("ImageToPDF_Title");
+            T_AddFolder = App.MainPageLoader.GetString("ImageToPDF_AddFolder");
+            T_AddFile = App.MainPageLoader.GetString("ImageToPDF_AddFile");
+            T_EmptyContext = App.MainPageLoader.GetString("ImageToPDF_EmptyContext");
+            T_Settings = App.MainPageLoader.GetString("ImageToPDF_Settings");
+            T_ExportTitle = App.MainPageLoader.GetString("ImageToPDF_ExportTitle");
+            T_Create = App.MainPageLoader.GetString("ImageToPDF_Create");
+            T_Merge = App.MainPageLoader.GetString("ImageToPDF_Merge");
+        }
+
+        #endregion
+
         #region 参数和属性
         private List<string> fileNames;
 
@@ -31,7 +135,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
 
         public List<int> fileNamesView = new List<int>();
 
-        public HomePagePictureToPDFDialogModel pictureToPDFModel=new HomePagePictureToPDFDialogModel();
+        public HomePagePictureToPDFDialogModel pictureToPDFModel = new HomePagePictureToPDFDialogModel();
 
         private string pictureToPDFGridIsEnabled = "True";
         public string PictureToPDFGridIsEnabled
@@ -139,6 +243,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         #endregion
         public HomePagePictureToPDFDialogViewModel(IDialogService dialogs)
         {
+            InitString();
             this.dialogs = dialogs;
             ToPDFCommand = new DelegateCommand(topdf);
             ADDPictureCommand = new DelegateCommand(addpicture);
@@ -152,7 +257,8 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
             this.dialogs = dialogs;
         }
         #region 逻辑函数
-        private void topdf() {
+        private void topdf()
+        {
             PictureToPDFGridIsEnabled = "False";
             if (pictureToPDFModel.Mode == HomePagePictureToPDFDialogModel.ToPDFFileMode.NewFiles)
             {
@@ -164,7 +270,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                     SaveSelectedPath = dlg.SelectedPath.Trim();
                     saveSelectedPath = SaveSelectedPath + "\\";
                 }
-                else { PictureToPDFGridIsEnabled = "True"; return;  }
+                else { PictureToPDFGridIsEnabled = "True"; return; }
                 fileNamesIndex = 0;
                 string fileName = "";
                 foreach (var filename in fileNames)
@@ -180,9 +286,9 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                     }
                     CPDFDocument topdfdoc = CPDFDocument.CreateDocument();
                     FileInfo fileinfo = new FileInfo(filename);
-                    JpegInsertPage(ref topdfdoc, filename, fileinfo,img.Width,img.Height);
+                    JpegInsertPage(ref topdfdoc, filename, fileinfo, img.Width, img.Height);
                     Trace.WriteLine("Path.GetTempPath():" + Path.GetTempPath());
-                    fileName = savefilename(filename,saveSelectedPath);
+                    fileName = savefilename(filename, saveSelectedPath);
                     topdfdoc.WriteToFilePath(fileName);
                     topdfdoc.Release();
                     string file_size = (((float)fileinfo.Length) / 1024).ToString() + " K";
@@ -195,7 +301,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
             }
             if (pictureToPDFModel.Mode == HomePagePictureToPDFDialogModel.ToPDFFileMode.OneNewFile)
             {
-                
+
                 CPDFDocument topdfdoc = CPDFDocument.CreateDocument();
                 int pageindex = 0;
                 FolderBrowserDialog folderDialog = new FolderBrowserDialog();
@@ -205,10 +311,11 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                 string NewFileName = "";
                 if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                 {
-                    NewFileName=sfd.FileName;
+                    NewFileName = sfd.FileName;
                 }
                 else { PictureToPDFGridIsEnabled = "True"; return; }
-                    foreach (var filename in fileNames) {
+                foreach (var filename in fileNames)
+                {
                     ImagesDataTable.Rows[fileNamesIndex]["FileState"] = "wait";
                     ImagesCurrentDataTable.Rows[fileNamesIndex]["FileState"] = "wait";
                     Image img = Image.FromFile(filename);
@@ -219,7 +326,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                         continue;
                     }
                     FileInfo fileinfo = new FileInfo(filename);
-                    JpegInsertPage(ref topdfdoc, filename, fileinfo,img.Width, img.Height, pageindex);
+                    JpegInsertPage(ref topdfdoc, filename, fileinfo, img.Width, img.Height, pageindex);
                     pageindex++;
                     string file_size = (((float)fileinfo.Length) / 1024).ToString() + " K";
                     ImagesDataTable.Rows[fileNamesIndex]["FileState"] = "complete";
@@ -239,7 +346,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                     saveSelectedPath = dlg.SelectedPath.Trim();
                     saveSelectedPath = saveSelectedPath + "\\";
                 }
-                else {PictureToPDFGridIsEnabled = "True"; return; }
+                else { PictureToPDFGridIsEnabled = "True"; return; }
                 CPDFDocument topdfdoc = CPDFDocument.InitWithFilePath(pictureToPDFModel.FilePath);
                 if (topdfdoc == null)
                 {
@@ -295,22 +402,22 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                     ImagesCurrentDataTable.Rows[fileNamesIndex]["FileState"] = "complete";
                     fileNamesIndex++;
                 }
-                string saveselectedpath = CommonHelper.CreateFilePath(saveSelectedPath + topdfdoc.FileName+".pdf");
+                string saveselectedpath = CommonHelper.CreateFilePath(saveSelectedPath + topdfdoc.FileName + ".pdf");
                 topdfdoc.WriteToFilePath(saveselectedpath);
                 System.Diagnostics.Process.Start("Explorer", "/select," + saveselectedpath);
                 topdfdoc.Release();
             }
             PictureToPDFGridIsEnabled = "True";
-            fileNamesIndex=0;
+            fileNamesIndex = 0;
         }
 
         /// <summary>
         /// 设置保存后的文件名
         /// </summary>
-        public string savefilename(string filename,string filepath)
+        public string savefilename(string filename, string filepath)
         {
             FileInfo file = new FileInfo(filename);
-            return CommonHelper.CreateFilePath(filepath + pictureToPDFModel.FrontFileNameLabel + file.Name.Replace(file.Extension,".pdf") + pictureToPDFModel.RearFileNameLabel);
+            return CommonHelper.CreateFilePath(filepath + pictureToPDFModel.FrontFileNameLabel + file.Name.Replace(file.Extension, ".pdf") + pictureToPDFModel.RearFileNameLabel);
         }
         #endregion
 
@@ -325,7 +432,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
             dlg.Filter = "PDF|*.pdf;*.PDF;";
             if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
-                SelectFileName=dlg.FileName;
+                SelectFileName = dlg.FileName;
                 pictureToPDFModel.FilePath = dlg.FileName;
                 ImageToPDFBtnIsEnable = "True";
             }
@@ -376,7 +483,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                 foreach (string app in apps)
                 {
                     var fi = new FileInfo(app);
-                    if (fi.Extension == ".png" || fi.Extension == ".jpg" || fi.Extension == ".jpeg" || fi.Extension ==".bmp"|| fi.Extension == ".gif"|| fi.Extension == ".tiff")
+                    if (fi.Extension == ".png" || fi.Extension == ".jpg" || fi.Extension == ".jpeg" || fi.Extension == ".bmp" || fi.Extension == ".gif" || fi.Extension == ".tiff")
                     {
                         fileNames.Add(app);
                     }
@@ -396,10 +503,10 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         public void removepicturefiles()
         {
             FileNameNumber = fileNames.Count;
-            
-                //Trace.WriteLine(filenamesview);
-                fileNames.Clear();
-            
+
+            //Trace.WriteLine(filenamesview);
+            fileNames.Clear();
+
             if (fileNames.Count < 1)
             {
                 SetPictureToPDFGridIsEnabled = "False";
@@ -409,7 +516,8 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
             updateListview("wait");
         }
 
-        public void removepicturefile() {
+        public void removepicturefile()
+        {
             FileNameNumber = fileNames.Count;
             Reverseorder(ref fileNamesView);
             foreach (int filenamesview in fileNamesView)
@@ -443,18 +551,20 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         /// <summary>
         /// 打开文件图片
         /// </summary>
-        public void openfiledialog(){
+        public void openfiledialog()
+        {
 
             foreach (int filenamesview in fileNamesView)
             {
-              System.Diagnostics.Process.Start("Explorer", "/select," + fileNames[filenamesview]);
+                System.Diagnostics.Process.Start("Explorer", "/select," + fileNames[filenamesview]);
             }
         }
 
         /// <summary>
         /// 删除重复的文件
         /// </summary>
-        public void RemoveExcess(ref List<string> Filenames) {
+        public void RemoveExcess(ref List<string> Filenames)
+        {
             List<string> filenames = new List<string>();
             foreach (var fileName in Filenames)
             {
@@ -472,7 +582,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         /// </summary>
         public void Reverseorder(ref List<int> Numbers)
         {
-            Numbers=Numbers.OrderBy(a=>a).ToList();
+            Numbers = Numbers.OrderBy(a => a).ToList();
             Numbers.Reverse();
         }
 
@@ -480,7 +590,8 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         /// 更新listview显示
         /// state 状态显示字符串
         /// </summary>
-        public void updateListview(string state) {
+        public void updateListview(string state)
+        {
             updateCurrentListview();
             DataTable imagesdatatable = new DataTable();
             imagesdatatable.Columns.Add("FileName");
@@ -492,7 +603,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
                 string file_all = fileName;
                 FileInfo f = new FileInfo(file_all);
                 if (!f.Exists) { continue; }
-                string file_size = (((float)f.Length)/1024).ToString()+" K";
+                string file_size = (((float)f.Length) / 1024).ToString() + " K";
                 imagesdatatable.Rows.Add(f.Name, file_size, ImagesCurrentDataTable.Rows[datatableindex]["FileState"]);
                 datatableindex++;
             }
@@ -503,7 +614,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         /// 更新Currentlistview显示
         /// pagerangetext 自定义页面范围字符串  pagerangeselectindex combobox下拉索引(0全部页面 1奇数页 2偶数页 3自定义页面)isevenpageisenabled 偶数页状态 state 状态显示字符串
         /// </summary>
-        public void updateCurrentListview( string state = "wait")
+        public void updateCurrentListview(string state = "wait")
         {
             if (fileNames.Count >= FileNameNumber)
             {
@@ -592,25 +703,26 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         /// height page高
         /// index 插入位置
         /// </summary>
-        private void JpegInsertPage(ref CPDFDocument topdfdoc,string filename, FileInfo fileinfo,int width,int height,int index=0) {
+        private void JpegInsertPage(ref CPDFDocument topdfdoc, string filename, FileInfo fileinfo, int width, int height, int index = 0)
+        {
 
             string tempFileName = "";
-            if (fileinfo.Extension == ".jpg"|| fileinfo.Extension == ".jpeg")
+            if (fileinfo.Extension == ".jpg" || fileinfo.Extension == ".jpeg")
             {
                 topdfdoc.InsertPage(index, width, height, filename);
             }
-            else 
+            else
             {
                 tempFileName = Path.GetTempPath() + "pngtemp.jpg";
                 if (!PictureConverter.SaveJpeg(filename, tempFileName))
-                { 
+                {
                     MessageBoxEx.Show("图片格式有问题");
                 }
                 topdfdoc.InsertPage(index, width, height, tempFileName);
             }
         }
 
-        public void CloseDialoge() { RequestClose?.Invoke(new DialogResult(ButtonResult.OK));}
+        public void CloseDialoge() { RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); }
         #endregion
 
         #region 构架行为
@@ -629,12 +741,12 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
 
         public void OnDialogOpened(IDialogParameters parameters)
         {
-            string[] filepath=null;
+            string[] filepath = null;
             parameters.TryGetValue<string[]>(ParameterNames.FilePath, out filepath);
-            if (filepath!=null)
+            if (filepath != null)
             {
-                fileNames=filepath.ToList();
-                
+                fileNames = filepath.ToList();
+
                 updateListview("wait");
             }
         }

+ 119 - 0
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialogViewModel.cs

@@ -39,6 +39,124 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
 {
     public class HomePagePrinterDialogViewModel : BindableBase, IDialogAware
     {
+        #region 文案
+
+        private string T_title;
+
+        public string T_Title
+        {
+            get { return T_title; }
+            set
+            {
+                SetProperty(ref T_title, value);
+            }
+        }
+
+        private string T_printer;
+
+        public string T_Printer
+        {
+            get { return T_printer; }
+            set
+            {
+                SetProperty(ref T_printer, value);
+            }
+        }
+
+        private string T_pageSettings;
+
+        public string T_PageSettings
+        {
+            get { return T_pageSettings; }
+            set
+            {
+                SetProperty(ref T_pageSettings, value);
+            }
+        }
+
+        private string T_copies;
+
+        public string T_Copies
+        {
+            get { return T_copies; }
+            set
+            {
+                SetProperty(ref T_copies, value);
+            }
+        }
+        
+        private string T_blackAndWhite;
+
+        public string T_BlackAndWhite
+        {
+            get { return T_blackAndWhite; }
+            set
+            {
+                SetProperty(ref T_blackAndWhite, value);
+            }
+        }
+        
+        private string T_printSettings;
+
+        public string T_PrintSettings
+        {
+            get { return T_printSettings; }
+            set
+            {
+                SetProperty(ref T_printSettings, value);
+            }
+        }
+
+        private string T_orientation;
+
+        public string T_Orientation
+        {
+            get { return T_orientation; }
+            set
+            {
+                SetProperty(ref T_orientation, value);
+            }
+        }
+
+        private string T_printContent;
+
+        public string T_PrintContent
+        {
+            get { return T_printContent; }
+            set
+            {
+                SetProperty(ref T_printContent, value);
+            }
+        }
+
+        private string T_reversePages;
+
+        public string T_ReversePages
+        {
+            get { return T_reversePages; }
+            set
+            {
+                SetProperty(ref T_reversePages, value);
+            }
+        }
+
+
+        private void  InitString()
+        {
+            T_Title = App.MainPageLoader.GetString("Print_Title");
+            T_Printer = App.MainPageLoader.GetString("Print_Printer");
+            T_PageSettings = App.MainPageLoader.GetString("Print_PageSettings");
+            T_Copies = App.MainPageLoader.GetString("Print_Copies");
+            T_BlackAndWhite = App.MainPageLoader.GetString("Print_BlackAndWhite");
+            T_PrintSettings = App.MainPageLoader.GetString("Print_PrintSettings");
+            T_Orientation = App.MainPageLoader.GetString("Print_Orientation");
+            T_PrintContent = App.MainPageLoader.GetString("Print_PrintContent");
+            T_ReversePages = App.MainPageLoader.GetString("Print_ReversePages");
+        }
+
+        #endregion
+
+
         public IRegionManager printRegion;
         public IDialogService printDialogs;
         public IEventAggregator printEvent;
@@ -262,6 +380,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
 
         HomePagePrinterDialogViewModel(IRegionManager regionManager, IDialogService dialogService, IEventAggregator eventAggregator)
         {
+            InitString();
             this.printRegion = regionManager;
             this.printDialogs = dialogService;
             this.printEvent = eventAggregator;

+ 58 - 16
PDF Office/ViewModels/FillAndSign/FillAndSignContentViewModel.cs

@@ -50,6 +50,7 @@ using System.Windows.Controls.Primitives;
 using Window = System.Windows.Window;
 using Task = System.Threading.Tasks.Task;
 using Size = System.Windows.Size;
+using System.Windows.Markup;
 
 namespace PDF_Office.ViewModels.FillAndSign
 {
@@ -66,6 +67,7 @@ namespace PDF_Office.ViewModels.FillAndSign
         private PopMenu FreeHandAnnotPopMenu;
         private PopMenu FreeTextAnnotPopMenu;
         private PopMenu MultiAnnotPopMenu;
+        public bool isFirst=true;
         private IRegionManager regions { get; set; }
         private Dictionary<string, AnnotArgsType> ToolExpandDict = new Dictionary<string, AnnotArgsType>();
         public static bool IsEdit = false;
@@ -100,7 +102,8 @@ namespace PDF_Office.ViewModels.FillAndSign
         #endregion
 
         public FillAndSignContentViewModel(IRegionManager regionManager, IEventAggregator events)
-        {
+        {
+           
             regions = regionManager;
             this.events = events;
             CheckCommand = new DelegateCommand<RoutedEventArgs>(CheckedEvent);
@@ -112,6 +115,15 @@ namespace PDF_Office.ViewModels.FillAndSign
             FreeTextAglin_MenuCommand = new DelegateCommand<object>(FreeTextAglin_Menu);
             InitSelectFreeHandAnnotMenu();
             InitSelectFreeTextAnnotMenu();
+           
+        }
+        private void InitFillAndSignProperty()
+        {
+
+            var FreehandDefault = GetAnnotDefault(AnnotArgsType.AnnotFreehand, "FillAndSign");
+            SelectColor = new SolidColorBrush(FreehandDefault.BorderColor != Color.FromArgb(0, 0, 0, 0) ? FreehandDefault.BorderColor : Colors.GreenYellow);
+            FillOpacity = FreehandDefault.Opacity > 0 ? FreehandDefault.Opacity : 1;
+            LineWidth = FreehandDefault.Thickness > 0 ? FreehandDefault.Thickness : 1;
         }
         private System.Windows.Controls.Primitives.Popup popup = null;
         private async void AnnotColorPalette_Menu(object obj)
@@ -276,13 +288,13 @@ namespace PDF_Office.ViewModels.FillAndSign
                         var freeHand = annot as FreehandAnnotArgs;
                         var color = freeHand.InkColor;
 
-                        Settings.Default.AppProperties.Annotate.FreeHandColor = color;
+                        //Settings.Default.AppProperties.Annotate.FreeHandColor = color;
 
-                        var FreehandDefault = GetAnnotDefault(AnnotArgsType.AnnotFreehand);
-                        FreehandDefault.ForgoundColor = color;
+                        var FreehandDefault = GetAnnotDefault(AnnotArgsType.AnnotFreehand, "FillAndSign");
+                        FreehandDefault.BorderColor = color;
                         FreehandDefault.Opacity = freeHand.Transparency;
                         FreehandDefault.Thickness = freeHand.LineWidth;
-
+                        FreehandDefault.SaveKey = "FillAndSign";
                         var isSolid = AnnotPropertyPanel.IsSolidStyle(freeHand.LineDash);
                         if (isSolid)
                         {
@@ -299,13 +311,32 @@ namespace PDF_Office.ViewModels.FillAndSign
 
                         SettingHelper.SetAnnotDefaultProperty(FreehandDefault);
                     }
+
+                    else if (annot is FreeTextAnnotArgs)
+                    {
+                        var freeText = annot as FreeTextAnnotArgs;
+                        Settings.Default.AppProperties.Annotate.TextAnnoteColor = freeText.FontColor;
+                        Settings.Default.AppProperties.Annotate.TextFontFamaily = freeText.FontFamily.ToString();
+                        Settings.Default.AppProperties.Annotate.TextAlign = freeText.Align;
+
+                        var FreeTextDefalut = GetAnnotDefault(AnnotArgsType.AnnotFreeText);
+                        FreeTextDefalut.ForgoundColor = freeText.FontColor;
+                        FreeTextDefalut.FontFamily = freeText.FontFamily.ToString();
+                        FreeTextDefalut.TextAlign = freeText.Align;
+                        FreeTextDefalut.FontSize = freeText.FontSize;
+                        FreeTextDefalut.FontWeight = freeText.FontWeight;
+                        FreeTextDefalut.FontStyle = freeText.FontStyle;
+                        FreeTextDefalut.BackgroundColor = freeText.BgColor;
+                        FreeTextDefalut.Opacity = (annot as FreeTextAnnotArgs).Transparency;
+                        SettingHelper.SetAnnotDefaultProperty(FreeTextDefalut);
+                    }
                 }
             }
         }
 
-        private DefaultAnnotProperty GetAnnotDefault(AnnotArgsType annotArgsType)
+        private DefaultAnnotProperty GetAnnotDefault(AnnotArgsType annotArgsType,string savaKey="")
         {
-            var Annot = SettingHelper.GetAnnotDefaultProperty(annotArgsType);
+            var Annot = SettingHelper.GetAnnotDefaultProperty(annotArgsType, savaKey);
             if (Annot == null)
             {
                 Annot = new DefaultAnnotProperty();
@@ -371,7 +402,7 @@ namespace PDF_Office.ViewModels.FillAndSign
         private void InitCheckedEvent(string e)
         {
             IsEdit = false;
-
+           
 
             //NavigateToProperty(control.Name);
             //不创建注释,属于注释模板
@@ -421,7 +452,7 @@ namespace PDF_Office.ViewModels.FillAndSign
                     ShowPropertyPanel(true);
                 }
             }
-
+         
         }
         //注释工具
         private void FindAnnotTypeKey(string tag, ref AnnotHandlerEventArgs annotArgs, bool isRightMenuAdd = false)
@@ -509,6 +540,7 @@ namespace PDF_Office.ViewModels.FillAndSign
             List<AnnotHandlerEventArgs> stampAnnotArgsList = new List<AnnotHandlerEventArgs>();
             if (stampAnnotArgs != null)
                 stampAnnotArgsList.Add(stampAnnotArgs);
+           
             //if (selectedArgs != null) { 
             //var annot = selectedArgs[0];
             //if (annot != null)
@@ -547,7 +579,7 @@ namespace PDF_Office.ViewModels.FillAndSign
             if (stampAnnotArgs != null)
                 stampAnnotArgsList.Add(stampAnnotArgs);
 
-            AddToPropertyPanel("ShapFillProperty", "", stampAnnotArgsList, annotAttribsList);
+            //AddToPropertyPanel("ShapFillProperty", "", stampAnnotArgsList, annotAttribsList);
             bool isTemplateAnnot = false;
             bool isSnapshotEdit = false;
             AnnotHandlerEventArgs annotArgs = stampAnnotArgs;
@@ -558,6 +590,7 @@ namespace PDF_Office.ViewModels.FillAndSign
                 annotArgs.Author = Settings.Default.AppProperties.Description.Author;
                 PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
                 PDFViewer.SetToolParam(annotArgs);
+                
                 isRightMenuAddAnnot = false;
             }
 
@@ -775,13 +808,15 @@ namespace PDF_Office.ViewModels.FillAndSign
                 {
                     if (propertyPanel.AnnotEvents == null)
                         propertyPanel.AnnotEvents = new List<AnnotAttribEvent>();
-
+                    
                     propertyPanel.AnnotEvents.Clear();
 
                     foreach (var itemAnnot in annots)
                     {
-                        var eventitem = AnnotAttribEvent.GetAnnotAttribEvent(itemAnnot, annotAttribsList);
+                        var eventitem = AnnotAttribEvent.GetAnnotAttribEvent(itemAnnot, annotAttribsList);
+                        PDFViewer.SelectAnnotation(itemAnnot.PageIndex, itemAnnot.AnnotIndex);
                         propertyPanel.AnnotEvents.Add(eventitem);
+
                     }
                 }
 
@@ -789,6 +824,7 @@ namespace PDF_Office.ViewModels.FillAndSign
                 if (annots[0] is LinkAnnotArgs && annotAttribEvent != null)
                 {
                     propertyPanel.AnnotEvent = annotAttribEvent;
+
                 }
             }
 
@@ -806,7 +842,9 @@ namespace PDF_Office.ViewModels.FillAndSign
 
                 if (isUpData) { return; }
 
-                if (viewContent == "ShapFillProperty") { NavigateToProperty(viewContent, propertyPanel); return; }
+                if (viewContent == "ShapFillProperty") {
+                    
+                    NavigateToProperty(viewContent, propertyPanel); return; }
                 viewContentViewModel.SelectedPrpoertyPanel(viewContent, propertyPanel);
             }
 
@@ -1349,6 +1387,7 @@ namespace PDF_Office.ViewModels.FillAndSign
                 return false;
             }
         }
+        //注释编辑事件
 
         private void PDFViewer_AnnotEditHandler(object sender, List<AnnotEditEvent> e)
         {
@@ -1363,6 +1402,7 @@ namespace PDF_Office.ViewModels.FillAndSign
                             int pageindex = editEvent.PageIndex;
                             int annotindex = editEvent.AnnotIndex;
                             viewContentViewModel.FillAndSign.Add(new Point(pageindex, annotindex));
+                             PDFViewer.SelectAnnotation(pageindex, annotindex);
                             break;
                     }
                 }
@@ -1387,12 +1427,12 @@ namespace PDF_Office.ViewModels.FillAndSign
                         {
 
                             GetSelectedAnnots(e);
+
                             //记录这次选中的注释,之后创建注释会跟随上次选中注释的属性值
                             //PDFViewer.SetToolParam(annot);
                         }
                         else
                         {
-
                             //TODO: 设计已重新调整为(仅限高亮注释):修改注释后,会作用到之后添加的注释中。因此先把此逻辑“创建注释后,会自动回到默认值”注释掉
                             if (annot.EventType != AnnotArgsType.AnnotStrikeout &&
                                 annot.EventType != AnnotArgsType.AnnotUnderline &&
@@ -1427,7 +1467,7 @@ namespace PDF_Office.ViewModels.FillAndSign
                             else
                             {
                                 ShowPropertyPanel();
-
+                               
                             }
                         }
                     }
@@ -1593,9 +1633,11 @@ namespace PDF_Office.ViewModels.FillAndSign
             navigationContext.Parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel);
             navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
             BindingPDFViewerHandler();
-            HookShapeIsCheck = true;
+            HookShapeIsCheck = true;
+            InitFillAndSignProperty();
             InitCheckedEvent("RbtnTick");
             IsEdit = false;
+
         }
         #endregion
     }

+ 73 - 31
PDF Office/ViewModels/FillAndSign/PropertyPanel/ShapFillPropertyViewModel.cs

@@ -50,15 +50,22 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
         {
             get { return selectColor; }
             set
-            {
-                SetProperty(ref selectColor, value);
-                fillAndSignContentViewModel.SelectColor = value;
-                if (FillAndSignContentViewModel.IsEdit)
+            {
+                SetProperty(ref selectColor, value);
+                if (!fillAndSignContentViewModel.isFirst)
                 {
-                    //  PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
-                    PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Color, (selectColor as SolidColorBrush).Color);
-                }
-                else { fillAndSignContentViewModel.SetStamp(); }
+                    fillAndSignContentViewModel.SelectColor = value;
+                    //if (FillAndSignContentViewModel.IsEdit)
+                    {
+                        //  PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
+                        PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Color, (selectColor as SolidColorBrush).Color);
+                    }
+                    //else
+                    {
+                        fillAndSignContentViewModel.SetStamp();
+                    }
+
+                }
 
             }
         }
@@ -70,14 +77,21 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
             set
             {
                 SetProperty(ref fillOpacity, value);
-                fillAndSignContentViewModel.FillOpacity = value;
-
-                if (FillAndSignContentViewModel.IsEdit)
+                if (!fillAndSignContentViewModel.isFirst)
                 {
-                    PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Transparency, fillOpacity);
-                }
-
-                else { fillAndSignContentViewModel.SetStamp(); }
+                    fillAndSignContentViewModel.FillOpacity = value;
+
+                    //if (FillAndSignContentViewModel.IsEdit)
+                    {
+                        PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Transparency, fillOpacity);
+                    }
+
+                    //else
+                    {
+                        fillAndSignContentViewModel.SetStamp();
+                    }
+
+                }
 
             }
         }
@@ -103,19 +117,25 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
             set
             {
                 SetProperty(ref lineWidth, value);
-                fillAndSignContentViewModel.LineWidth = value;
-
-                if (FillAndSignContentViewModel.IsEdit)
+                if (!fillAndSignContentViewModel.isFirst)
                 {
+                    fillAndSignContentViewModel.LineWidth = value;
 
-                    PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Height, 60);
-                    PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Width, 60);
-                    PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
-                    PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, updatapath);
+                    //if (FillAndSignContentViewModel.IsEdit)
+                    {
 
-                }
-                else { fillAndSignContentViewModel.SetStamp(); }
+                        PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Height, 60);
+                        PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Width, 60);
+                        PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
+                        PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Path, updatapath);
+
+                    }
+                   // else
+                    {
+                        fillAndSignContentViewModel.SetStamp();
+                    }
 
+                }
             }
         }
         public DelegateCommand<object> SelectedThickCommand { get; set; }
@@ -138,6 +158,29 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
             SelectedOpacityValueCommand = new DelegateCommand<object>(SelectedOpacityValue);
         }
 
+        private void InitFillAndSignProperty()
+        {
+            if (fillAndSignContentViewModel.isFirst)
+            {
+                SelectColor = fillAndSignContentViewModel.SelectColor;
+                FillOpacity = fillAndSignContentViewModel.FillOpacity;
+                LineWidth = fillAndSignContentViewModel.LineWidth;
+            }
+
+            fillAndSignContentViewModel.isFirst = false;
+        }
+
+        private DefaultAnnotProperty GetAnnotDefault(AnnotArgsType annotArgsType)
+        {
+            var Annot = SettingHelper.GetAnnotDefaultProperty(annotArgsType, "FillAndSign");
+            if (Annot == null)
+            {
+                Annot = new DefaultAnnotProperty();
+                Annot.AnnotToolType = annotArgsType;
+            }
+            return Annot;
+        }
+
         private void SharpsType_Command(object obj)
         {
             if (obj != null)
@@ -160,7 +203,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                     var hookShape = new PathGeometry();
                     hookShape.AddGeometry(Geometry.Parse("M0.599976 7.0286L5.57775 11.8L13.4 1.40002"));
                     DataPath = hookShape;
-                    if (FillAndSignContentViewModel.IsEdit)
+                    //if (FillAndSignContentViewModel.IsEdit)
                     {
                         PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
                         updatapath = new List<List<Point>> { new List<Point> { new Point(0.599976, 7.0286), new Point(5.57775, 11.8), new Point(13.4, 1.40002) } };
@@ -177,7 +220,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                     var forkShape = new PathGeometry();
                     forkShape.AddGeometry(Geometry.Parse("M3.19995 3.20001L12.8 12.8 M12.8 3.20001L3.20005 12.8"));
                     DataPath = forkShape;
-                    if (FillAndSignContentViewModel.IsEdit)
+                   // if (FillAndSignContentViewModel.IsEdit)
                     {
                         PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
                         updatapath = new List<List<Point>> { new List<Point> { new Point(3.19995, 3.20001), new Point(12.8, 12.8) }, new List<Point> { new Point(12.8, 3.20001), new Point(3.20005, 12.8) } };
@@ -193,7 +236,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                         RectangleGeometry rectPath = new RectangleGeometry();
                         rectPath.Rect = new Rect(0, 5, 28, 22);
                         DataPath = rectPath;
-                        if (FillAndSignContentViewModel.IsEdit)
+                        //if (FillAndSignContentViewModel.IsEdit)
                         {
                             PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
                             updatapath = new List<List<Point>> { new List<Point> { new Point(5, 5), new Point(28, 5) }, new List<Point> { new Point(28, 5), new Point(28, 27) }, new List<Point> { new Point(28, 27), new Point(5, 27) }, new List<Point> { new Point(5, 27), new Point(5, 5) } };
@@ -210,7 +253,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                         var lineShape = new PathGeometry();
                         lineShape.AddGeometry(Geometry.Parse(" M0,10L20,10"));
                         DataPath = lineShape;
-                        if (FillAndSignContentViewModel.IsEdit)
+                       // if (FillAndSignContentViewModel.IsEdit)
                         {
                             PropertyPanel.UpdateAnnotAAttrib(AnnotAttrib.Thickness, LineWidth * fillAndSignContentViewModel.LineWidthMultiple);
                             updatapath = new List<List<Point>> { new List<Point> { new Point(3.19995, 3.20001), new Point(28, 3.20001) } };
@@ -230,7 +273,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                         circlePath.RadiusY = 2.4;
                         circlePath.Center = new Point(2.4, 2.4);
                         DataPath = circlePath;
-                        if (FillAndSignContentViewModel.IsEdit)
+                       // if (FillAndSignContentViewModel.IsEdit)
                         {
                             fillAndSignContentViewModel.LineWidthMultiple = 4;
                             updatapath = new List<List<Point>> { new List<Point> { new Point(3.19995, 3.19995), new Point(3.19995, 3.19995) } };
@@ -398,8 +441,7 @@ namespace PDF_Office.ViewModels.FillAndSign.PropertyPanel
                 IsSelected = !FillAndSignContentViewModel.IsEdit;
 
 
-
-
+                InitFillAndSignProperty();
 
                 if (IsMultiSelected)
                 {

+ 7 - 6
PDF Office/ViewModels/PropertyPanel/AnnotPanel/FreehandAnnotPropertyViewModel.cs

@@ -299,8 +299,7 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 if (BasicVm.IsMultiSelected)
                 {
                     IsAttributeEquals();
-
-                    BasicVm.SetStrDashStyle("None");
+                    BasicVm.IsDashLine = BasicVm.IsSolidLine = false;
                 }
                 else
                 {
@@ -391,12 +390,12 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 if(isNoEqualsDir["ThickSolidDashStyle"] == true)
                 {
                     var isSolid = isSolidStyle(temp);
-                    BasicVm.SetStrDashStyle(isSolid ? "Solid" : "Dash");
+                    BasicVm.IsSolidLine = isSolid;
+                    BasicVm.IsDashLine = !isSolid;
                 }
                 else
                 {
-                    BasicVm.SetStrDashStyle("None");
-
+                    BasicVm.IsSolidLine = BasicVm.IsDashLine = false;
                 }
             }
         }
@@ -432,7 +431,9 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                     BasicVm.AnnotThickness = annot.LineWidth;
                     BasicVm.Dash = annot.LineDash;
                     var isSolid = isSolidStyle(annot);
-                    BasicVm.SetStrDashStyle(isSolid ? "Solid" : "Dash");
+                    BasicVm.IsSolidLine = isSolid;
+                    BasicVm.IsDashLine = !isSolid;
+ 
                     IsPen = true;
                     StrokeDashArray = new DoubleCollection();
                     if (isSolid == false)

+ 1 - 1
PDF Office/ViewModels/PropertyPanel/AnnotPanel/FreetextAnnotPropertyViewModel.cs

@@ -506,7 +506,7 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 if (BasicVm.IsMultiSelected)
                 {
                     IsAttributeEquals();
-                    BasicVm.SetStrDashStyle("None");
+                    BasicVm.IsSolidLine = BasicVm.IsDashLine = false;
                 }
                 else
                 {

+ 5 - 5
PDF Office/ViewModels/PropertyPanel/AnnotPanel/SharpsAnnotPropertyViewModel.cs

@@ -503,14 +503,14 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 if (isNoEqualsDir["ThickSolidDashStyle"] == true)
                 {
                     var isSolid = IsSolidStyle(temp);
-                    BasicVm.SetStrDashStyle(isSolid ? "Solid" : "Dash");
+                    BasicVm.IsSolidLine = isSolid;
+                    BasicVm.IsDashLine = !isSolid;
                 }
                 else
                 {
-                    BasicVm.SetStrDashStyle("None");
+                    BasicVm.IsSolidLine = BasicVm.IsDashLine = false;
                 }
 
-
             }
         }
 
@@ -606,8 +606,8 @@ namespace PDF_Office.ViewModels.PropertyPanel.AnnotPanel
                 }
 
                 isSolid = IsSolidStyle(Annot);
-                BasicVm.SetStrDashStyle(isSolid ? "Solid" : "Dash");
-
+                BasicVm.IsSolidLine = isSolid;
+                BasicVm.IsDashLine = !isSolid;
             }
 
         }

+ 29 - 29
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Command.cs

@@ -839,36 +839,36 @@ namespace PDF_Office.ViewModels.Tools
                 hoverPen.DashStyle = DashStyles.Dash;
                 e.DrawContext?.DrawRectangle(null, hoverPen, hoverRect);
 
-                //Todo:目前ComPDFKit.Viewer没有e.Annot参数
+                
                 //便签,显示ToolTip内容
-                //if (e.Annot != null && e.Annot.Type == C_ANNOTATION_TYPE.C_ANNOTATION_TEXT)
-                //{
-                //    if (PDFViewer.ToolTip == null)
-                //    {
-                //        var content = e.Annot.GetContent();
-                //        if (string.IsNullOrEmpty(content) == false)
-                //        {
-                //            ToolTip TipChild = new ToolTip();
-                //            TipChild.Style = App.Current.Resources["FlowToolTip"] as Style;
-                //            TipChild.MaxWidth = 246;
-                //            TipChild.Content = content;
-                //            TipChild.Visibility = Visibility.Visible;
-                //            TipChild.IsOpen = true;
-                //            TipChild.Placement = PlacementMode.Right;
-                //            var rec = e.Annot.GetRect();
-                //            TipChild.PlacementRectangle = new Rect(rec.left, rec.top, rec.right, rec.bottom);
-                //            TipChild.PlacementTarget = PDFViewer.Parent as ContentControl;
-                //            TipChild.Placement = PlacementMode.MousePoint;
-                //            PDFViewer.ToolTip = TipChild;
-                //            oldRect = hoverRect;
-                //            PDFViewer.MouseMove -= PDFViewer_MouseMove;
-                //            PDFViewer.MouseMove += PDFViewer_MouseMove;
-                //            return;
-                //        }
-
-                //    }
-
-                //}
+                if (e.Annot != null && e.Annot.Type == C_ANNOTATION_TYPE.C_ANNOTATION_TEXT)
+                {
+                    if (PDFViewer.ToolTip == null)
+                    {
+                        var content = e.Annot.GetContent();
+                        if (string.IsNullOrEmpty(content) == false)
+                        {
+                            ToolTip TipChild = new ToolTip();
+                            TipChild.Style = App.Current.Resources["FlowToolTip"] as Style;
+                            TipChild.MaxWidth = 246;
+                            TipChild.Content = content;
+                            TipChild.Visibility = Visibility.Visible;
+                            TipChild.IsOpen = true;
+                            TipChild.Placement = PlacementMode.Right;
+                            var rec = e.Annot.GetRect();
+                            TipChild.PlacementRectangle = new Rect(rec.left, rec.top, rec.right, rec.bottom);
+                            TipChild.PlacementTarget = PDFViewer.Parent as ContentControl;
+                            TipChild.Placement = PlacementMode.MousePoint;
+                            PDFViewer.ToolTip = TipChild;
+                            oldRect = hoverRect;
+                            PDFViewer.MouseMove -= PDFViewer_MouseMove;
+                            PDFViewer.MouseMove += PDFViewer_MouseMove;
+                            return;
+                        }
+
+                    }
+
+                }
             }
 
             CloseAnnotToolTip();

+ 2 - 6
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs

@@ -1725,12 +1725,8 @@ namespace PDF_Office.ViewModels.Tools
                 var annot = menu.Parameter as AnnotHandlerEventArgs;
                 if (annot != null)
                 {
-                    List<AnnotHandlerEventArgs> list = new List<AnnotHandlerEventArgs>();
-                    list.Add(annot);
-                    GetStickyNote(list);
-                    annot.Author = Settings.Default.AppProperties.Description.Author;
-                    PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
-                    PDFViewer.SetToolParam(annot);
+                    var sticky = annot as StickyAnnotArgs;
+                    sticky.PopupEditWnd();
 
                     #region 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
 

+ 28 - 2
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -118,6 +118,10 @@ namespace PDF_Office.ViewModels.Tools
                 {
                     if (item is CustomIconToggleBtn customIconToggle)
                     {
+                        if(customIconToggle.Name == "BtnHand")
+                        {
+                            HandToolIsCheckedEvent((bool)customIconToggle.IsChecked);
+                        }
                         //if (customIconToggle.Name == "BtnHand")
                         //{
                         //    BtnHandIsChecked = (bool)customIconToggle.IsChecked;
@@ -131,11 +135,31 @@ namespace PDF_Office.ViewModels.Tools
                         }
                     }
                 }
-                PDFViewer.SetMouseMode(MouseModes.PanTool);
+
                 viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
             }
         }
 
+        private void HandToolIsCheckedEvent(bool isChecked)
+        {
+            if (isChecked == false)
+            {
+                //鼠标框选多选注释
+                if (PDFViewer.MouseMode != MouseModes.AnnotCreate)
+                {
+                    PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
+                    var annotArgs = new SelectToolArgs();
+                    PDFViewer.SetToolParam(annotArgs);
+                }
+            }
+            else
+            {
+                //鼠标滚动页面
+                PDFViewer.SetMouseMode(MouseModes.PanTool);
+                PDFViewer.SetToolParam(new AnnotHandlerEventArgs());
+            }
+        }
+
         #endregion 初始化
 
         #region Command实现
@@ -605,7 +629,9 @@ namespace PDF_Office.ViewModels.Tools
         {
             if(KeyEventsHelper.IsSingleKey(Key.Escape))
             {
-                PDFViewer.SetMouseMode(MouseModes.None);
+                BtnHandIsChecked = true;
+                PDFViewer.SetMouseMode(MouseModes.PanTool);
+                PDFViewer.ClearSelectAnnots();
                 StrAnnotToolChecked = "";
 
             }

+ 28 - 3
PDF Office/Views/BottomToolContent.xaml

@@ -18,7 +18,28 @@
     BorderBrush="{StaticResource color.sys.layout.divider}"
     BorderThickness="0,1,0,0"
     mc:Ignorable="d">
-    <UserControl.Resources />
+    <UserControl.Resources >
+        <RoutedUICommand x:Key="SetSinglePage" Text="SetSinglePage"/>
+        <RoutedUICommand x:Key="SetDoublePage" Text="SetDoublePage"/>
+    </UserControl.Resources>
+    <UserControl.InputBindings>
+        <KeyBinding Command="{Binding FirstPageCommand}" Modifiers="Ctrl" Key="Up" />
+        <KeyBinding Command="{Binding LastPageCommand}"  Modifiers="Ctrl" Key="Down"  />
+        <KeyBinding Command="{Binding PrePageCommand}" Modifiers="Ctrl" Key="Left" ></KeyBinding>
+        <KeyBinding Command="{Binding NextPageCommand}" Modifiers="Ctrl" Key="Right" ></KeyBinding>
+        <KeyBinding Command="{Binding PreViewCommand}" Modifiers="Ctrl" Key="OemOpenBrackets"></KeyBinding>
+        <KeyBinding Command="{Binding PreViewCommand}" Modifiers="Ctrl" Key="OemCloseBrackets"></KeyBinding>
+        <KeyBinding Command="{Binding PageTextKeyDownCommand}" Modifiers="Ctrl+Alt" Key="G"></KeyBinding>
+        <KeyBinding Command="{Binding ZoomInCommand}" Modifiers="Ctrl" Key="OemPlus"></KeyBinding>
+        <KeyBinding Command="{Binding ZoomInCommand}" Modifiers="Ctrl+Shift" Key="OemPlus"></KeyBinding>
+        <KeyBinding Command="{Binding ZoomOutCommand}" Modifiers="Ctrl" Key="OemMinus"></KeyBinding>
+        <KeyBinding Command="{StaticResource SetSinglePage}" Gesture="Ctrl+1" ></KeyBinding>
+        <KeyBinding Command="{StaticResource SetDoublePage}" Gesture="Ctrl+2" ></KeyBinding>
+    </UserControl.InputBindings>
+    <UserControl.CommandBindings>
+        <CommandBinding x:Name="SetSinglePageCommand" Command="{StaticResource SetSinglePage}" Executed="SetSinglePageCommand_Executed"/>
+        <CommandBinding x:Name="SetDoublePageCommand" Command="{StaticResource SetDoublePage}" Executed="SetDoublePageCommand_Executed"/>
+    </UserControl.CommandBindings>
     <Grid Height="32" Background="{StaticResource color.sys.layout.mg}">
         <Grid.ColumnDefinitions>
             <ColumnDefinition Width="*" />
@@ -35,14 +56,16 @@
                 Height="24"
                 Margin="4"
                 Command="{Binding FirstPageCommand}"
-                Style="{StaticResource btn.selector}">
+                Style="{StaticResource btn.selector}"
+                >
                 <Path
                     Width="24"
                     Height="24"
                     HorizontalAlignment="Center"
                     VerticalAlignment="Center"
                     Data="M5.25 6V18H6.75V6H5.25ZM12.8803 8.93035L10.5607 11.25H18.95V12.75H10.5607L12.8803 15.0696L11.8196 16.1303L8.21967 12.5303C7.92678 12.2374 7.92678 11.7626 8.21967 11.4697L11.8196 7.86969L12.8803 8.93035Z"
-                    Fill="{StaticResource color.icon.base.neutral.norm.lv1}" />
+                    Fill="{StaticResource color.icon.base.neutral.norm.lv1}" >
+                </Path>
             </Button>
             <Button
                 Width="24"
@@ -174,6 +197,7 @@
                 Width="24"
                 Height="24"
                 Margin="4"
+                Name="SinglePage_Btn"
                 Command="{Binding SetViewModeCommand}"
                 IsChecked="{Binding IsSingleView}"
                 Style="{StaticResource StateBarRbt}">
@@ -190,6 +214,7 @@
                 Width="24"
                 Height="24"
                 Margin="4"
+                Name="DoublePage_Btn"
                 Command="{Binding SetViewModeCommand}"
                 Cursor="Hand"
                 IsChecked="{Binding IsDoubleView}"

+ 13 - 0
PDF Office/Views/BottomToolContent.xaml.cs

@@ -24,5 +24,18 @@ namespace PDF_Office.Views
         {
             InitializeComponent();
         }
+
+        private void SetSinglePageCommand_Executed(object sender, ExecutedRoutedEventArgs e)
+        {
+            this.SinglePage_Btn.IsChecked = true;
+            this.DoublePage_Btn.IsChecked = false;
+
+        }
+
+        private void SetDoublePageCommand_Executed(object sender, ExecutedRoutedEventArgs e)
+        {
+            this.SinglePage_Btn.IsChecked = false;
+            this.DoublePage_Btn.IsChecked = true;
+        }
     }
 }

+ 3 - 3
PDF Office/Views/Dialog/ConverterDialogs/ConverterCSVDialog.xaml

@@ -18,7 +18,7 @@
     prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
     prism:ViewModelLocator.AutoWireViewModel="True"
     mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转CSV">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1" >
                 <Grid.ColumnDefinitions>
@@ -99,7 +99,7 @@
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
                     Command="{Binding CancelCommand}"
-                    Content="取消" 
+                    Content="{Binding T_No}" 
                      Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
@@ -107,7 +107,7 @@
                     Margin="124,0"
                     HorizontalAlignment="Right"
                     Command="{Binding ConverterCommnad}"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                      Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 6 - 6
PDF Office/Views/Dialog/ConverterDialogs/ConverterHTMLDialog.xaml

@@ -7,16 +7,16 @@
              xmlns:local="clr-namespace:PDF_Office.Views.Dialog.PageEditDialogs"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:pageeditdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.PageEditDialogs"
-             xmlns:prism="http://prismlibrary.com/"           
+             xmlns:prism="http://prismlibrary.com/" xmlns:converterdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.ConverterDialogs"
              Width="468"
-    Height="454"
-             d:DataContext="{d:DesignInstance Type=pageeditdialogs:ExtractDialogViewModel}"
+             Height="454"
+             d:DataContext="{d:DesignInstance Type=converterdialogs:ConverterHTMLDialogViewModel}"
              d:DesignHeight="454"
              d:DesignWidth="468"
              prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
              prism:ViewModelLocator.AutoWireViewModel="True"
              mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转HTML">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -70,14 +70,14 @@
                     Height="32"
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
-                    Content="取消" 
+                    Content="{Binding T_No}" 
                     Command="{Binding CancelCommand}" Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
                     Height="32"
                     Margin="124,0"
                     HorizontalAlignment="Right"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                     Command = "{Binding ConverterCommnad}" Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 3 - 3
PDF Office/Views/Dialog/ConverterDialogs/ConverterImgDialog.xaml

@@ -18,7 +18,7 @@
     prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
     prism:ViewModelLocator.AutoWireViewModel="True"
     mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转图片">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -99,14 +99,14 @@
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
                     Command="{Binding CancelCommand}"
-                    Content="取消" Style="{StaticResource btn.sec}"/>
+                    Content="{Binding T_No}" Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
                     Height="32"
                     Margin="124,0"
                     HorizontalAlignment="Right"
                     Command="{Binding ConverterCommnad}"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                     Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 7 - 7
PDF Office/Views/Dialog/ConverterDialogs/ConverterPPTDialog.xaml

@@ -7,16 +7,16 @@
              xmlns:local="clr-namespace:PDF_Office.Views.Dialog.PageEditDialogs"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:pageeditdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.PageEditDialogs"
-             xmlns:prism="http://prismlibrary.com/"           
-            Width="468"
-    Height="454"
-             d:DataContext="{d:DesignInstance Type=pageeditdialogs:ExtractDialogViewModel}"
+             xmlns:prism="http://prismlibrary.com/" xmlns:converterdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.ConverterDialogs"
+             Width="468"
+             Height="454"
+             d:DataContext="{d:DesignInstance Type=converterdialogs:ConverterPPTDialogViewModel}"
              d:DesignHeight="454"
              d:DesignWidth="468"
              prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
              prism:ViewModelLocator.AutoWireViewModel="True"
              mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转PPT">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -70,14 +70,14 @@
                     Height="32"
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
-                    Content="取消" 
+                    Content="{Binding T_No}" 
                     Command="{Binding CancelCommand}" Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
                     Height="32"
                     Margin="124,0"
                     HorizontalAlignment="Right"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                     Command = "{Binding ConverterCommnad}" Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 6 - 6
PDF Office/Views/Dialog/ConverterDialogs/ConverterRTFDialog.xaml

@@ -7,16 +7,16 @@
              xmlns:local="clr-namespace:PDF_Office.Views.Dialog.PageEditDialogs"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:pageeditdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.PageEditDialogs"
-             xmlns:prism="http://prismlibrary.com/"           
+             xmlns:prism="http://prismlibrary.com/" xmlns:converterdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.ConverterDialogs"
              Width="468"
-    Height="454"
-             d:DataContext="{d:DesignInstance Type=pageeditdialogs:ExtractDialogViewModel}"
+             Height="454"
+             d:DataContext="{d:DesignInstance Type=converterdialogs:ConverterRTFDialogViewModel}"
              d:DesignHeight="454"
              d:DesignWidth="468"
              prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
              prism:ViewModelLocator.AutoWireViewModel="True"
              mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转RTF">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -70,14 +70,14 @@
                     Height="32"
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
-                    Content="取消" 
+                    Content="{Binding T_No}" 
                     Command="{Binding CancelCommand}" Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
                     Height="32"
                     Margin="124,0"
                     HorizontalAlignment="Right"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                     Command = "{Binding ConverterCommnad}" Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 6 - 6
PDF Office/Views/Dialog/ConverterDialogs/ConverterTextDialog.xaml

@@ -7,16 +7,16 @@
              xmlns:local="clr-namespace:PDF_Office.Views.Dialog.PageEditDialogs"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:pageeditdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.PageEditDialogs"
-             xmlns:prism="http://prismlibrary.com/"           
+             xmlns:prism="http://prismlibrary.com/" xmlns:converterdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.ConverterDialogs"
              Width="468"
-    Height="454"
-             d:DataContext="{d:DesignInstance Type=pageeditdialogs:ExtractDialogViewModel}"
+             Height="454"
+             d:DataContext="{d:DesignInstance Type=converterdialogs:ConverterTextDialogViewModel}"
              d:DesignHeight="454"
              d:DesignWidth="468"
              prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
              prism:ViewModelLocator.AutoWireViewModel="True"
              mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转Text">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -70,14 +70,14 @@
                     Height="32"
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
-                    Content="取消" 
+                    Content="{Binding T_No}" 
                     Command="{Binding CancelCommand}" Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
                     Height="32"
                     Margin="124,0"
                     HorizontalAlignment="Right"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                     Command = "{Binding ConverterCommnad}" Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 5 - 5
PDF Office/Views/Dialog/ConverterDialogs/ConverterWordDialog.xaml

@@ -7,16 +7,16 @@
              xmlns:local="clr-namespace:PDF_Office.Views.Dialog.PageEditDialogs"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:pageeditdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.PageEditDialogs"
-             xmlns:prism="http://prismlibrary.com/"           
+             xmlns:prism="http://prismlibrary.com/" xmlns:converterdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.ConverterDialogs"
              Width="468"
              Height="454"
-             d:DataContext="{d:DesignInstance Type=pageeditdialogs:ExtractDialogViewModel}"
+             d:DataContext="{d:DesignInstance Type=converterdialogs:ConverterWordDialogViewModel}"
              d:DesignHeight="454"
              d:DesignWidth="468"
              prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}"
              prism:ViewModelLocator.AutoWireViewModel="True"
              mc:Ignorable="d">
-    <cus:DialogContent Header="PDF转Word">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -85,14 +85,14 @@
                     Height="32"
                     Margin="0,0,16,0"
                     HorizontalAlignment="Right"
-                    Content="取消" 
+                    Content="{Binding T_No}" 
                     Command="{Binding CancelCommand}" Style="{StaticResource btn.sec}"/>
                 <Button
                     Width="98"
                     Height="32"
                     Margin="124,0"
                     HorizontalAlignment="Right"
-                    Content="转换" 
+                    Content="{Binding T_YES}" 
                     Command = "{Binding ConverterCommnad}" Style="{StaticResource Btn.cta}"/>
             </Grid>
         </cus:DialogContent.BottmBar>

+ 15 - 14
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePagePictureToPDFDialog.xaml

@@ -8,6 +8,7 @@
     xmlns:homepagetoolsdialogs="clr-namespace:PDF_Office.ViewModels.Dialog.HomePageToolsDialogs"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:prism="http://prismlibrary.com/"
+    xmlns:mainpage="clr-namespace:PDF_Office.Strings.MainPage"
     x:Name="userControl"
     d:DataContext="{d:DesignInstance Type=homepagetoolsdialogs:HomePagePictureToPDFDialogViewModel}"
     prism:Dialog.WindowStyle="{StaticResource stlWindowEx}"
@@ -155,7 +156,7 @@
             <RowDefinition Height="*" />
         </Grid.RowDefinitions>
         <Grid Background="{StaticResource color.sys.layout.bg.tabbar}" >
-            <TextBlock Text="Image to PDF" Foreground="{StaticResource color.sys.text.neutral.lv1}" FontSize="16" FontFamily="Segoe UI" VerticalAlignment="Center" FontWeight="DemiBold" Margin="16,8,0,8" HorizontalAlignment="Left"></TextBlock>
+            <TextBlock Text="{Binding T_Title}" Foreground="{StaticResource color.sys.text.neutral.lv1}" FontSize="16" FontFamily="Segoe UI" VerticalAlignment="Center" FontWeight="DemiBold" Margin="16,8,0,8" HorizontalAlignment="Left"></TextBlock>
             <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" WindowChrome.IsHitTestVisibleInChrome="True">
                 <Button
                 Name="BtnMiniSize"
@@ -260,7 +261,7 @@
                                 Margin="0,2,0,0"
                                 FontSize="12"
                                 Style="{StaticResource PropertyHeaderLv2}"
-                                Text="Click the button below to select the file."
+                                Text="{Binding T_EmptyContext}"
                                 TextAlignment="Center"
                                 TextBlock.Foreground="{StaticResource color.sys.text.neutral.lv3}" />
                             </StackPanel>
@@ -305,16 +306,16 @@
                                     <MenuItem
                                 Name="OpenFileMenuItem"
                                 Click="OpenFileMenuItem_Click"
-                                Header="打开文件" />
+                                Header="{x:Static mainpage:MainPage.ImageToPDF_MenuShowFolder}" />
                                     <MenuItem
                                 Name="RemoveFileMenuItem"
                                 Click="RemoveFileMenuItem_Click"
-                                Header="移除" />
+                                Header="{x:Static mainpage:MainPage.ImageToPDF_MenuDelete}" />
                                 </ContextMenu>
                             </ListView.ContextMenu>
                             <ListView.View>
                                 <GridView ColumnHeaderContainerStyle="{StaticResource HeadStyle}">
-                                    <GridViewColumn Width="{Binding ElementName=col1, Path=ActualWidth}" Header="文档名">
+                                    <GridViewColumn Width="{Binding ElementName=col1, Path=ActualWidth}" Header="{x:Static mainpage:MainPage.ImageToPDF_FileName}">
                                         <GridViewColumn.CellTemplate>
                                             <DataTemplate>
                                                 <StackPanel Orientation="Horizontal">
@@ -341,8 +342,8 @@
                                             </DataTemplate>
                                         </GridViewColumn.CellTemplate>
                                     </GridViewColumn>
-                                    <GridViewColumn DisplayMemberBinding="{Binding FileSize}" Width="{Binding ElementName=col2, Path=ActualWidth}" Header="大小" />
-                                    <GridViewColumn Header="状态" Width="{Binding ElementName=col3, Path=ActualWidth}">
+                                    <GridViewColumn DisplayMemberBinding="{Binding FileSize}" Width="{Binding ElementName=col2, Path=ActualWidth}" Header="{x:Static mainpage:MainPage.ImageToPDF_Size}" />
+                                    <GridViewColumn Header="{x:Static mainpage:MainPage.ImageToPDF_Status}" Width="{Binding ElementName=col3, Path=ActualWidth}">
                                         <GridViewColumn.CellTemplate>
                                             <DataTemplate>
                                                 <StackPanel Orientation="Horizontal">
@@ -427,7 +428,7 @@
                                 Height="22"
                                 FontSize="14"
                                 Foreground="Black"
-                                Text="Add Files" />
+                                Text="{Binding T_AddFile}" />
                             </Border>
                             <Border
                             Width="12"
@@ -463,11 +464,11 @@
                                     <MenuItem
                                     x:Name="添加文件"
                                     Command="{Binding ADDPictureCommand}"
-                                    Header="添加文件" />
+                                    Header="{Binding T_AddFile}" />
                                     <MenuItem
                                     x:Name="添加文件夹"
                                     Command="{Binding ADDPictureFilesCommand}"
-                                    Header="添加文件夹" />
+                                    Header="{Binding T_AddFolder}" />
                                 </StackPanel>
                             </Border>
                         </Grid>
@@ -504,12 +505,12 @@
                 </Grid.RowDefinitions>
                 <Grid Grid.Row="0" Margin="16,14,0,0">
                     <StackPanel>
-                        <TextBlock Style="{StaticResource PagesView_titleContext}" Text="Setting" />
+                        <TextBlock Style="{StaticResource PagesView_titleContext}" Text="{Binding T_Settings}" />
                         <TextBlock
                         Height="20"
                         Margin="0,16,0,0"
                         Style="{StaticResource PropertyHeaderLv2}"
-                        Text="Export" />
+                        Text="{Binding T_ExportTitle}" />
 
                         <StackPanel Margin="0,8,0,0">
                             <RadioButton
@@ -518,7 +519,7 @@
                             Click="RadioButton_Click"
                             IsChecked="True"
                             Style="{StaticResource RadioButtonStyleText}">
-                                <TextBlock Text="新建文档" />
+                                <TextBlock Text="{Binding T_Create}" />
                             </RadioButton>
                             <RadioButton
                             Name="OneNewFileNameRadioButtom"
@@ -526,7 +527,7 @@
                             Padding="9,0,0,0"
                             Click="RadioButton_Click"
                             Style="{StaticResource RadioButtonStyleText}">
-                                <TextBlock Text="合并为同一份PDF文档" />
+                                <TextBlock Text="{Binding T_Merge}" />
                             </RadioButton>
                             <RadioButton
                             Name="SelectFileNameRadioButton"

+ 10 - 10
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePagePrinter/HomePagePrinterDialog.xaml

@@ -1,7 +1,7 @@
 <UserControl x:Class="PDF_Office.Views.Dialog.HomePageToolsDialogs.HomePagePrinter.HomePagePrinterDialog"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:prism="http://prismlibrary.com/" xmlns:cus="clr-namespace:PDF_Office.CustomControl" xmlns:homepageprinter="clr-namespace:PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:i="http://schemas.microsoft.com/xaml/behaviors" xmlns:DataContext="{d:DesignInstance Type=homepageprinter:HomePagePrinterDialogViewModel}"
+             xmlns:prism="http://prismlibrary.com/" xmlns:cus="clr-namespace:PDF_Office.CustomControl" xmlns:homepageprinter="clr-namespace:PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:i="http://schemas.microsoft.com/xaml/behaviors" xmlns:DataContext="{d:DesignInstance Type=homepageprinter:HomePagePrinterDialogViewModel}" 
              prism:ViewModelLocator.AutoWireViewModel="True" 
              prism:Dialog.WindowStyle="{StaticResource DialogWindowStyle}">
     <UserControl.Resources>
@@ -58,7 +58,7 @@
         </Style>
         <Style x:Key="HelpTipStyle" TargetType="Label"></Style>
     </UserControl.Resources>
-    <cus:DialogContent Header="打印">
+    <cus:DialogContent Header="{Binding T_Title}">
         <cus:DialogContent.Content>
             <Grid Grid.Row="1">
                 <Grid.ColumnDefinitions>
@@ -82,7 +82,7 @@
                             </Grid.RowDefinitions>
                             <StackPanel Grid.Row="0" Orientation="Vertical">
                                 <StackPanel Orientation="Horizontal">
-                                    <TextBlock Text="Printer:" FontFamily="Segoe UI" FontSize="14" Height="22" ></TextBlock>
+                                    <TextBlock Text="{Binding T_Printer}" FontFamily="Segoe UI" FontSize="14" Height="22" ></TextBlock>
                                     <ComboBox Name="PrinterNameComboBox" Width="273" Height="32" Margin="16,0,16,0"  ItemsSource="{Binding PrinterNameList}" SelectedIndex="{Binding PrinterSelectedIndex}">
                                         <i:Interaction.Triggers>
                                             <i:EventTrigger EventName="SelectionChanged">
@@ -92,20 +92,20 @@
                                             </i:EventTrigger>
                                         </i:Interaction.Triggers>
                                     </ComboBox>
-                                    <Button Name="PageSettingsBtn" Style="{StaticResource PageSettingsBtnStyle}" Content="Page Settings" Height="32" Width="116"  Command="{Binding SetPaperCommand}" />
+                                    <Button Name="PageSettingsBtn" Style="{StaticResource PageSettingsBtnStyle}" Content="{Binding T_PageSettings}" Height="32" Width="116"  Command="{Binding SetPaperCommand}" />
                                 </StackPanel>
                                 <StackPanel Orientation="Horizontal" Margin="0,8,0,0">
                                     <StackPanel Orientation="Horizontal">
-                                        <TextBlock Height="22" Text="Copies:" FontFamily="Segoe UI" FontSize="14"></TextBlock>
+                                        <TextBlock Height="22" Text="{Binding T_Copies}" FontFamily="Segoe UI" FontSize="14"></TextBlock>
                                         <cus:NumericUpDown Height="32" Width="132" Margin="16,0,0,0" Minimum="1" Text="{Binding CopiesNumber}"></cus:NumericUpDown>
                                     </StackPanel>
                                     <CheckBox Name="GrayscaleChk" VerticalAlignment="Center" Margin="17,0,0,0" Command="{Binding SetGrayscaleCommand}" CommandParameter="{Binding ElementName=GrayscaleChk}">
-                                        <TextBlock Text="Black and White"  Foreground="#252629" FontFamily="Segoe UI" FontSize="14"/>
+                                        <TextBlock Text="{Binding T_BlackAndWhite}"  Foreground="#252629" FontFamily="Segoe UI" FontSize="14"/>
                                     </CheckBox>
                                 </StackPanel>
                             </StackPanel>
                             <StackPanel Grid.Row="1" Orientation="Vertical" Margin="0,18,0,0">
-                                <TextBlock Text="Print Settings" FontFamily="Segoe UI" FontSize="12" Foreground="#616469"/>
+                                <TextBlock Text="{Binding T_PrintSettings}" FontFamily="Segoe UI" FontSize="12" Foreground="#616469"/>
                                 <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                                     <StackPanel Orientation="Horizontal">
                                         <TextBlock Text="Page range:" FontFamily="Segoe UI" FontSize="14" Height="22" Width="80"></TextBlock>
@@ -121,7 +121,7 @@
                                         </cus:WritableComboBox>
                                     </StackPanel>
                                     <StackPanel Orientation="Horizontal" Margin="20,0,0,0">
-                                        <TextBlock Text="Direction:" FontFamily="Segoe UI" FontSize="14" Height="22"></TextBlock>
+                                        <TextBlock Text="{Binding T_Orientation}" FontFamily="Segoe UI" FontSize="14" Height="22"></TextBlock>
                                         <ComboBox Name="PrintOrientationCmb" Width="145" Height="32" Margin="16,0,0,0"  ItemsSource="{Binding PrintOrientationList}" SelectedIndex="{Binding PrintOrientationIndex}">
                                             <i:Interaction.Triggers>
                                                 <i:EventTrigger EventName="SelectionChanged">
@@ -132,7 +132,7 @@
                                     </StackPanel>
                                 </StackPanel>
                                 <StackPanel Orientation="Horizontal" Margin="0,8,0,0">
-                                    <TextBlock Text="Contents:" FontFamily="Segoe UI" FontSize="14" Height="22" Width="80"></TextBlock>
+                                    <TextBlock Text="{Binding T_PrintContent}" FontFamily="Segoe UI" FontSize="14" Height="22" Width="80"></TextBlock>
                                     <ComboBox Name="PrintContentCbx" Width="377" Height="32" Margin="16,0,16,0"  ItemsSource="{Binding PrintContentList}"  SelectedIndex="{Binding PrintContentIndex}" >
                                         <i:Interaction.Triggers>
                                             <i:EventTrigger EventName="SelectionChanged">
@@ -143,7 +143,7 @@
                                 </StackPanel>
                                 <StackPanel Orientation="Horizontal" Margin="0,12,0,0">
                                     <CheckBox x:Name="ReversePageCbx" VerticalAlignment="Center"  Command="{Binding SetReversePageCommand}" CommandParameter="{Binding ElementName=ReversePageCbx}">
-                                        <TextBlock Text="Reverse pages"  FontFamily="Segoe UI" FontSize="14"/>
+                                        <TextBlock Text="{Binding T_ReversePages}"  FontFamily="Segoe UI" FontSize="14"/>
                                     </CheckBox>
                                     <CheckBox x:Name="PrintBorderCbx" VerticalAlignment="Center" Margin="25,0,0,0" Command="{Binding SetPrintBorderCommand}" CommandParameter="{Binding ElementName=PrintBorderCbx}" Visibility="{Binding PrintPageBorderVisibility}">
                                         <TextBlock Text="Print page border"  FontFamily="Segoe UI" FontSize="14"/>

+ 0 - 1
PDF Office/Views/FillAndSign/PropertyPanel/ShapFillProperty.xaml.cs

@@ -27,7 +27,6 @@ namespace PDF_Office.Views.FillAndSign.PropertyPanel
         private ShapFillPropertyViewModel ViewModel => DataContext as ShapFillPropertyViewModel;
         public ShapFillProperty()
         {
-            InitializeComponent();
             InitializeComponent();
             cusColor.SelectedColorHandler += cusColor_SelectedColor;
 

+ 6 - 10
PDF Office/Views/PropertyPanel/AnnotPanel/FreehandAnnotProperty.xaml

@@ -178,29 +178,25 @@
                     <RadioButton x:Name="BtnSolid" Tag="Solid" GroupName="LineMode"
                                  Width="105" Height="32" Margin="0,0,10,0" Foreground="#616469"
                                  VerticalContentAlignment="Center" Background="Transparent"
+                                 IsChecked="{Binding BasicVm.IsSolidLine}"
+                                 Command="{Binding LineModeCheckedCommand}"
+                                 CommandParameter="{Binding ElementName=BtnSolid, Path=Tag}" 
                                  Style="{DynamicResource GreyBgRadioBtnStyle}">
                         <RadioButton.Content>
                             <Line X1="10" Y1="5" X2="90" Y2="5" Stroke="Black" StrokeThickness="2" />
                         </RadioButton.Content>
-                        <i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Checked">
-                                <i:InvokeCommandAction Command="{Binding LineModeCheckedCommand}" CommandParameter="{Binding ElementName=BtnSolid, Path=Tag}" />
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>
                     </RadioButton>
 
                     <RadioButton x:Name="BtnDashed" Tag="Dashed" GroupName="LineMode" 
                                  Width="105" Height="32" Margin="0,0" Foreground="#616469"
                                  VerticalContentAlignment="Center" Background="Transparent"
+                                 IsChecked="{Binding BasicVm.IsDashLine}"
+                                 Command="{Binding LineModeCheckedCommand}"
+                                 CommandParameter="{Binding ElementName=BtnDashed, Path=Tag}" 
                                  Style="{DynamicResource GreyBgRadioBtnStyle}">
                         <RadioButton.Content>
                             <Line X1="10" Y1="5" X2="90" Y2="5" Stroke="Black" StrokeThickness="2" StrokeDashArray="2"/>
                         </RadioButton.Content>
-                        <i:Interaction.Triggers>
-                            <i:EventTrigger EventName="Checked">
-                                <i:InvokeCommandAction Command="{Binding LineModeCheckedCommand}" CommandParameter="{Binding ElementName=BtnDashed, Path=Tag}" />
-                            </i:EventTrigger>
-                        </i:Interaction.Triggers>
                     </RadioButton>
 
                 </StackPanel>

+ 1 - 59
PDF Office/Views/PropertyPanel/AnnotPanel/FreehandAnnotProperty.xaml.cs

@@ -21,68 +21,10 @@ namespace PDF_Office.Views.PropertyPanel.AnnotPanel
     /// </summary>
     public partial class FreehandAnnotProperty : UserControl
     {
-        private FreehandAnnotPropertyViewModel ViewModel => DataContext as FreehandAnnotPropertyViewModel;
+
         public FreehandAnnotProperty()
         {
             InitializeComponent();
-            this.Loaded += usercontrol_Loaded;
-            this.Unloaded += usercontrol_Unloaded;
-        }
-
-        private void usercontrol_Unloaded(object sender, RoutedEventArgs e)
-        {
-
-        }
-
-        private void usercontrol_Loaded(object sender, RoutedEventArgs e)
-        {
-            if (ViewModel != null)
-            {
-                var str = ViewModel.BasicVm.strDashStyle;
-                if (str == "Solid")
-                {
-                    BtnSolid.IsChecked = true;
-                }
-                else if (str == "Dash")
-                {
-                    BtnDashed.IsChecked = true;
-                }
-                else
-                {
-                    BtnSolid.IsChecked = false;
-                    BtnDashed.IsChecked = false;
-                }
-            }
-        }
-
-        private void EraseBtn_Click(object sender, RoutedEventArgs e)
-        {
-            if (EraseBtn.IsChecked == true)
-            {
-                PenBtn.IsChecked = !EraseBtn.IsChecked;
-            }
-            else
-            {
-                EraseBtn.IsChecked = true;
-            }
-               
-        }
-
-        private void PenBtn_Click(object sender, RoutedEventArgs e)
-        {
-            if (PenBtn.IsChecked == true)
-            {
-                EraseBtn.IsChecked = !PenBtn.IsChecked;
-            }
-            else
-            {
-                PenBtn.IsChecked = true;
-            }
-        }
-
-        private void PenBtn_Checked(object sender, RoutedEventArgs e)
-        {
-            EraseBtn.IsChecked = false;
         }
     }
 }

+ 6 - 10
PDF Office/Views/PropertyPanel/AnnotPanel/SharpsAnnotProperty.xaml

@@ -272,29 +272,25 @@
                 <RadioButton x:Name="BtnSolid" Tag="Solid" GroupName="LineMode"
                                  Width="105" Height="32" Margin="0,0,10,0" Foreground="#616469"
                                  VerticalContentAlignment="Center" Background="Transparent"
+                                 Command="{Binding LineStyleCommand}"
+                                 CommandParameter="{Binding ElementName=BtnSolid, Path=Tag}" 
+                                 IsChecked="{Binding BasicVm.IsSolidLine}"
                                  Style="{DynamicResource GreyBgRadioBtnStyle}">
                     <RadioButton.Content>
                         <Line X1="10" Y1="5" X2="90" Y2="5" Stroke="Black" StrokeThickness="2" />
                     </RadioButton.Content>
-                    <i:Interaction.Triggers>
-                        <i:EventTrigger EventName="Checked">
-                            <i:InvokeCommandAction Command="{Binding LineStyleCommand}" CommandParameter="{Binding ElementName=BtnSolid, Path=Tag}" />
-                        </i:EventTrigger>
-                    </i:Interaction.Triggers>
                 </RadioButton>
 
                 <RadioButton x:Name="BtnDashed" Tag="Dashed" GroupName="LineMode"
                                  Width="105" Height="32" Margin="0,0" Foreground="#616469"
                                  VerticalContentAlignment="Center" Background="Transparent"
+                                 Command="{Binding LineStyleCommand}"
+                                 CommandParameter="{Binding ElementName=BtnDashed, Path=Tag}"
+                                 IsChecked="{Binding BasicVm.IsDashLine}"
                                  Style="{DynamicResource GreyBgRadioBtnStyle}">
                     <RadioButton.Content>
                         <Line X1="10" Y1="5" X2="90" Y2="5" Stroke="Black" StrokeThickness="2" StrokeDashArray="2"/>
                     </RadioButton.Content>
-                    <i:Interaction.Triggers>
-                        <i:EventTrigger EventName="Checked">
-                            <i:InvokeCommandAction Command="{Binding LineStyleCommand}" CommandParameter="{Binding ElementName=BtnDashed, Path=Tag}" />
-                        </i:EventTrigger>
-                    </i:Interaction.Triggers>
                 </RadioButton>
 
             </StackPanel>

+ 1 - 16
PDF Office/Views/PropertyPanel/AnnotPanel/SharpsAnnotProperty.xaml.cs

@@ -36,22 +36,7 @@ namespace PDF_Office.Views.PropertyPanel.AnnotPanel
         {
             if(ViewModel != null)
             {
-                var str = ViewModel.BasicVm.strDashStyle;
-                if (str == "Solid")
-                {
-                    BtnSolid.IsChecked = true;
-                }
-                else if (str == "Dash")
-                {
-                    BtnDashed.IsChecked = true;
-                }
-                else
-                {
-                    BtnSolid.IsChecked = false;
-                    BtnDashed.IsChecked = false;
-                }
-
-                 str = ViewModel.BasicVm.strOtherTag;
+                var str = ViewModel.BasicVm.strOtherTag;
                 if (str == "Rect")
                 {
                     SharpRectBtn.IsChecked = true;

+ 3 - 0
PDF Office/Views/PropertyPanel/AnnotPanel/TextAnnotProperty.xaml

@@ -47,12 +47,15 @@
                         <RowDefinition Height="*"/>
                     </Grid.RowDefinitions>
                     <Rectangle Grid.Row="1" Grid.Column="1"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
+                               Opacity="{Binding BasicVm.FillOpacity}"
                                Fill="{Binding BasicVm.FontColor}" Visibility="{Binding BasicVm.AnnotType,Converter={StaticResource AnnotArgsTypeConverter},ConverterParameter=AnnotHighlight}" />
                   
                     <Rectangle Grid.Row="1" Grid.Column="1" Height="2" StrokeThickness="2" HorizontalAlignment="Stretch"
+                               Opacity="{Binding BasicVm.FillOpacity}"
                                Stroke="{Binding BasicVm.FontColor}" Visibility="{Binding BasicVm.AnnotType,Converter={StaticResource AnnotArgsTypeConverter},ConverterParameter=AnnotStrikeout}"/>
                     
                     <Rectangle Grid.Row="1" Grid.Column="1" VerticalAlignment="Bottom"  Height="2" StrokeThickness="2" HorizontalAlignment="Stretch" 
+                               Opacity="{Binding BasicVm.FillOpacity}"
                                Stroke="{Binding BasicVm.FontColor}" Visibility="{Binding BasicVm.AnnotType,Converter={StaticResource AnnotArgsTypeConverter},ConverterParameter=AnnotUnderline}" />
 
                     <TextBlock Name="SampleText" Padding="4,2,4,2" Grid.Row="1" Grid.Column="1" Text="{x:Static mainpage:MainPage.Sample}" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" FontFamily="Segoe UI" FontSize="18" >

+ 5 - 0
PDF Office/Views/PropertyPanel/ViewModular/ViewModularContent.xaml

@@ -26,6 +26,11 @@
             <PathGeometry x:Key="SinglePage " Figures="M3.5 1.75C3.5 1.61193 3.61193 1.5 3.75 1.5H8.5V4.75C8.5 5.16421 8.83579 5.5 9.25 5.5H12.5V14.25C12.5 14.3881 12.3881 14.5 12.25 14.5H3.75C3.61193 14.5 3.5 14.3881 3.5 14.25V1.75ZM11.4393 4L10 2.56066V4H11.4393ZM3.75 0C2.7835 0 2 0.783501 2 1.75V14.25C2 15.2165 2.7835 16 3.75 16H12.25C13.2165 16 14 15.2165 14 14.25V5.16421C14 4.70008 13.8156 4.25497 13.4874 3.92678L10.0732 0.512563C9.74503 0.184374 9.29992 0 8.83579 0H3.75Z" />
         </ResourceDictionary>
     </UserControl.Resources>
+    <UserControl.InputBindings>
+        <KeyBinding Command="{Binding OpenFullCommand}" Gesture="F11" />
+    </UserControl.InputBindings>
+    
+    
     <ScrollViewer VerticalScrollBarVisibility="Auto">
         <StackPanel Margin="5,0,5,0">
             <TextBlock

+ 4 - 1
PDF Office/Views/ViewContent.xaml

@@ -22,6 +22,7 @@
     Drop="UserControl_Drop"
     KeyDown="UserControl_KeyDown"
     mc:Ignorable="d">
+
     <i:Interaction.Triggers>
         <i:EventTrigger EventName="Loaded">
             <prism:InvokeCommandAction Command="{Binding Load}" />
@@ -30,6 +31,7 @@
             <prism:InvokeCommandAction Command="{Binding MouseDown}" />
         </i:EventTrigger>
     </i:Interaction.Triggers>
+    
     <UserControl.Resources>
         <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
@@ -41,9 +43,10 @@
                 <Setter Property="Height" Value="20" />
             </Style>
             <convert:BoolToVisible x:Key="BoolToVisibleConvert" />
-        </ResourceDictionary>
+      </ResourceDictionary>
     </UserControl.Resources>
 
+    
     <Grid Background="{StaticResource color.sys.layout.mg}">
         <Grid.RowDefinitions>
             <RowDefinition Name="HeadRow" Height="40" />