Sfoglia il codice sorgente

渲染自定义控件-选择页面范围,预览改变

liyijie 2 anni fa
parent
commit
1387acc5f2
27 ha cambiato i file con 877 aggiunte e 90 eliminazioni
  1. 1 1
      PDF Office/CustomControl/PageTurningPreview.xaml
  2. 30 47
      PDF Office/CustomControl/PageTurningPreview.xaml.cs
  3. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterCSVDialogViewModel.cs
  4. 4 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterExcelDialogViewModel.cs
  5. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterHTMLDialogViewModel.cs
  6. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterImgDialogViewModel.cs
  7. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterPPTDialogViewModel.cs
  8. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterRTFDialogViewModel.cs
  9. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterTextDialogViewModel.cs
  10. 3 1
      PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterWordDialogViewModel.cs
  11. 1 1
      PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePageExtractDialogViewModel.cs
  12. 1 1
      PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePageInsertDialogViewModel.cs
  13. 1 1
      PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePageSplitDialogViewModel.cs
  14. 78 1
      PDF Office/Views/Dialog/ConverterDialogs/ConverterCSVDialog.xaml.cs
  15. 80 0
      PDF Office/Views/Dialog/ConverterDialogs/ConverterExcelDialog.xaml.cs
  16. 81 2
      PDF Office/Views/Dialog/ConverterDialogs/ConverterHTMLDialog.xaml.cs
  17. 79 0
      PDF Office/Views/Dialog/ConverterDialogs/ConverterImgDialog.xaml.cs
  18. 81 2
      PDF Office/Views/Dialog/ConverterDialogs/ConverterPPTDialog.xaml.cs
  19. 17 17
      PDF Office/Views/Dialog/ConverterDialogs/ConverterProgressBarDialog.xaml
  20. 80 2
      PDF Office/Views/Dialog/ConverterDialogs/ConverterRTFDialog.xaml.cs
  21. 81 2
      PDF Office/Views/Dialog/ConverterDialogs/ConverterTextDialog.xaml.cs
  22. 81 1
      PDF Office/Views/Dialog/ConverterDialogs/ConverterWordDialog.xaml.cs
  23. 1 1
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageExtractDialog.xaml
  24. 73 1
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageExtractDialog.xaml.cs
  25. 14 1
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageInsertDialog.xaml.cs
  26. 1 1
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageSplitDialog.xaml
  27. 71 0
      PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageSplitDialog.xaml.cs

+ 1 - 1
PDF Office/CustomControl/PageTurningPreview.xaml

@@ -14,7 +14,7 @@
             </Viewbox>
         </Border>
         <StackPanel Orientation="Horizontal"  Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,16,0,0">
-            <Button IsEnabled="False" Name="PrePage" Width="24" Click="PrePage_Click" Height="24" HorizontalAlignment="Left" FontSize="16" Background="WhiteSmoke" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
+            <Button Name="PrePage" Width="24" Click="PrePage_Click" Height="24" HorizontalAlignment="Left" FontSize="16" Background="WhiteSmoke" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
                 <TextBlock Text="&lt;" VerticalAlignment="Center" ></TextBlock>
             </Button>
             <TextBox x:Name="CurrentPage" Width="48" Height="24" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="11,0,2,0" Text="1" InputMethod.IsInputMethodEnabled="False"   PreviewTextInput="CountTextBox_PreviewTextInput" KeyDown="CurrentPage_KeyDown"></TextBox>

+ 30 - 47
PDF Office/CustomControl/PageTurningPreview.xaml.cs

@@ -1,7 +1,9 @@
 using ComPDFKit.PDFDocument;
 using ComPDFKit.PDFPage;
+using PDF_Office.Helper;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
 using System.Text.RegularExpressions;
@@ -25,14 +27,17 @@ namespace PDF_Office.CustomControl
     public partial class PageTurningPreview : UserControl
     {
         public CPDFDocument document;
+        public List<int> PageIndexLists = new List<int>();
+        public int CurrentIndex=0;
         public PageTurningPreview()
-        {
+        {   
             InitializeComponent();
+         
         }
 
         public async Task RenderBitmap(CPDFDocument doc)
         {
-            CPDFPage page = doc.PageAtIndex( int.Parse(this.CurrentPage.Text) - 1);
+            CPDFPage page = doc.PageAtIndex(PageIndexLists[CurrentIndex]);
             byte[] bmp_data = new byte[(int)page.PageSize.Width * (int)page.PageSize.Height * 4];
             await Task.Run(delegate
             {
@@ -49,79 +54,57 @@ namespace PDF_Office.CustomControl
 
         private void PrePage_Click(object sender, RoutedEventArgs e)
         {
-            if (this.CurrentPage.Text == "" || !int.TryParse(this.CurrentPage.Text, out int _))
-            {
-                this.CurrentPage.Text = "1";
-            }
-            if (int.Parse(this.CurrentPage.Text) > 1 && int.Parse(this.CurrentPage.Text) <= document.PageCount)
+
+            if (CurrentIndex > 0)
             {
-                int Page = int.Parse(this.CurrentPage.Text);
-                this.CurrentPage.Text = (--Page).ToString();
+                CurrentIndex--;
+                this.CurrentPage.Text = (PageIndexLists[CurrentIndex] + 1).ToString();
                 if (document != null)
                 {
                     AwaitRenderBitmap(document);
                 }
             }
-            else if (int.Parse(this.CurrentPage.Text) <= 1) { this.CurrentPage.Text = "1"; }
-            else { this.CurrentPage.Text = document.PageCount.ToString(); }
-            NextPage.IsEnabled = true;
-            if (this.CurrentPage.Text == "1")
-            {
-                PrePage.IsEnabled = false;
-            }
-
         }
 
         private void NextPage_Click(object sender, RoutedEventArgs e)
         {
-
-            if (this.CurrentPage.Text == ""|| !int.TryParse(this.CurrentPage.Text,out int _))
+            if (CurrentIndex < PageIndexLists.Count()-1 && PageIndexLists.Count() > 0)
             {
-                this.CurrentPage.Text = "1";
-            }
-            if (int.Parse(this.CurrentPage.Text) < document.PageCount)
-            {
-                int Page = int.Parse(this.CurrentPage.Text);
-                this.CurrentPage.Text = (++Page).ToString();
-                if (document != null)
+                CurrentIndex++;
+                this.CurrentPage.Text = (PageIndexLists[CurrentIndex]+1).ToString();
+                    if (document != null)
                 {
                     AwaitRenderBitmap(document);
                 }
             }
-            PrePage.IsEnabled= true;
-            if (this.CurrentPage.Text == document.PageCount.ToString())
-            {
-                 NextPage.IsEnabled = false;
-            }
+           
+            
         }
 
         private void CurrentPage_KeyDown(object sender, KeyEventArgs e)
         {
-            if (this.CurrentPage.Text == ""|| !int.TryParse(this.CurrentPage.Text, out int _))
-            {
-                this.CurrentPage.Text = "1";
-            }
+            
             if (e.Key == Key.Enter)
             {
-                if (this.CurrentPage.Text == "" || int.Parse(this.CurrentPage.Text) < 1)
+                if (this.CurrentPage.Text == "" || !int.TryParse(this.CurrentPage.Text, out int _))
                 {
-                    this.CurrentPage.Text = "1";
+                    this.CurrentPage.Text = (PageIndexLists[0] + 1).ToString();
                 }
                 if (this.PageIndex != null)
                 {
-                    if (int.Parse(this.CurrentPage.Text) > int.Parse(this.PageIndex.Text))
+                    if (PageIndexLists.Contains( int.Parse(this.CurrentPage.Text)-1))
                     {
-                        this.CurrentPage.Text = this.PageIndex.Text;
+                        CurrentIndex=PageIndexLists.IndexOf(int.Parse(this.CurrentPage.Text)-1);
+                        this.CurrentPage.Text = (PageIndexLists[CurrentIndex]+1).ToString();
+                        AwaitRenderBitmap(document);
+                    }
+                    else
+                    {
+                        this.CurrentPage.Text = (PageIndexLists[CurrentIndex] + 1).ToString();
+                        MessageBox.Show("超出页面范围");
                     }
                 }
-                if (int.Parse(this.CurrentPage.Text) <= document.PageCount && int.Parse(this.CurrentPage.Text) > 0)
-                {
-                    AwaitRenderBitmap(document);
-                }
-                else
-                {
-                    MessageBox.Show("超出页面范围");
-                }
+                
             }
         }
 

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterCSVDialogViewModel.cs

@@ -30,6 +30,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public IDialogService dialogs;
 
+        public string CurrentPageIndex="1";
+
         public string PageRangeText { set; get; } = "0";
 
         public string PageRangeSelectIndex { set; get; } = "0";
@@ -58,7 +60,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterCSVModel.OutputPath =dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterCSVModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterCSVModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterCSVModel.PageIndexLists, ConverterCSVModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 4 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterExcelDialogViewModel.cs

@@ -23,6 +23,9 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public CPDFViewer currentViewer;
 
+        public string CurrentPageIndex = "1";
+
+
         public IDialogService dialogs;
 
         public string PageRangeText { set; get; } = "0";
@@ -54,7 +57,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterExcelModel.OutputPath = dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterExcelModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterExcelModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterExcelModel.PageIndexLists, ConverterExcelModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterHTMLDialogViewModel.cs

@@ -25,6 +25,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public IDialogService dialogs;
 
+        public string CurrentPageIndex = "1";
+
         public string PageRangeText { set; get; } = "0";
 
         public string PageRangeSelectIndex { set; get; } = "0";
@@ -53,7 +55,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
                 ConverterHTMLModel.OutputPath = dlg.SelectedPath.Trim();
             }
          
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterHTMLModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterHTMLModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterHTMLModel.PageIndexLists, ConverterHTMLModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterImgDialogViewModel.cs

@@ -22,6 +22,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public CPDFViewer currentViewer;
 
+        public string CurrentPageIndex = "1";
+
         public IDialogService dialogs;
 
         public string PageRangeText { set; get; } = "0";
@@ -74,7 +76,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterImgModel.OutputPath = dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterImgModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterImgModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterImgModel.PageIndexLists, ConverterImgModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterPPTDialogViewModel.cs

@@ -25,6 +25,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public IDialogService dialogs;
 
+        public string CurrentPageIndex = "1";
+
         public string PageRangeText { set; get; } = "0";
 
         public string PageRangeSelectIndex { set; get; } = "0";
@@ -50,7 +52,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterPPTModel.OutputPath = dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterPPTModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterPPTModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterPPTModel.PageIndexLists, ConverterPPTModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterRTFDialogViewModel.cs

@@ -25,6 +25,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public IDialogService dialogs;
 
+        public string CurrentPageIndex = "1";
+
         public string PageRangeText { set; get; } = "0";
 
         public string PageRangeSelectIndex { set; get; } = "0";
@@ -50,7 +52,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterRTFModel.OutputPath = dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterRTFModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterRTFModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterRTFModel.PageIndexLists, ConverterRTFModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterTextDialogViewModel.cs

@@ -25,6 +25,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public IDialogService dialogs;
 
+        public string CurrentPageIndex = "1";
+
         public string PageRangeText { set; get; } = "0";
 
         public string PageRangeSelectIndex { set; get; } = "0";
@@ -50,7 +52,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterTextModel.OutputPath = dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterTextModel.PageRange, PageRangeText,true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterTextModel.PageRange, PageRangeText,true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterTextModel.PageIndexLists, ConverterTextModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 3 - 1
PDF Office/ViewModels/Dialog/ConverterDialogs/ConverterWordDialogViewModel.cs

@@ -24,6 +24,8 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
 
         public IDialogService dialogs;
 
+        public string CurrentPageIndex = "1";
+
         public string PageRangeText { set; get; } = "0";
 
         public string PageRangeSelectIndex { set; get; } = "0";
@@ -53,7 +55,7 @@ namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
             {
                 ConverterWordModel.OutputPath = dlg.SelectedPath.Trim();
             }
-            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterWordModel.PageRange, PageRangeText, true);
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterWordModel.PageRange, PageRangeText, true, CurrentPageIndex);
             char[] enumerationSeparator = new char[] { ',' };
             char[] rangeSeparator = new char[] { '-' };
             if (!CommonHelper.GetPagesInRange(ref ConverterWordModel.PageIndexLists, ConverterWordModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))

+ 1 - 1
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePageExtractDialogViewModel.cs

@@ -21,7 +21,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         #region 参数和属性
         public CPDFDocument document;
 
-        private CPDFViewer currentViewer;
+        public CPDFViewer currentViewer;
 
         private HomePageExtractDialogModel extractModel = new HomePageExtractDialogModel();
 

+ 1 - 1
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePageInsertDialogViewModel.cs

@@ -17,7 +17,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         #region 参数和属性
         public CPDFDocument document;
 
-        private CPDFViewer currentViewer;
+        public CPDFViewer currentViewer;
 
         private HomePageInsertDialogModel insertModel = new HomePageInsertDialogModel();
 

+ 1 - 1
PDF Office/ViewModels/Dialog/HomePageToolsDialogs/HomePageSplitDialogViewModel.cs

@@ -17,7 +17,7 @@ namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs
         #region 参数和属性
         public CPDFDocument document;
 
-        private CPDFViewer currentViewer;
+        public CPDFViewer currentViewer;
 
         private HomePageSplitDialogModel splitModel = new HomePageSplitDialogModel();
 

+ 78 - 1
PDF Office/Views/Dialog/ConverterDialogs/ConverterCSVDialog.xaml.cs

@@ -1,5 +1,9 @@
-using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
 using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -17,6 +21,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterCSVDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,7 +40,72 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+                
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterCSVDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterCSVDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterCSVDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+           
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
             }
+            else {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
+            }
+            
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {
+            
+            string PageRangeSelectIndex = ((ConverterCSVDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterCSVDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText=((ConverterCSVDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+                
+            }
+            if (PageRangeSelectIndex == "1") {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex]+1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterCSVDialogViewModel)this.DataContext).CurrentPageIndex= (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
     }
 }

+ 80 - 0
PDF Office/Views/Dialog/ConverterDialogs/ConverterExcelDialog.xaml.cs

@@ -1,5 +1,9 @@
 using ComPDFKit_Conversion.Options;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
 using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -17,6 +21,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterExcelDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,7 +40,75 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterExcelDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterExcelDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterExcelDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterExcelDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterExcelDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterExcelDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterExcelDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
 
         private void OnlyTableComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

+ 81 - 2
PDF Office/Views/Dialog/ConverterDialogs/ConverterHTMLDialog.xaml.cs

@@ -1,4 +1,8 @@
-using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -16,6 +20,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterHTMLDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,8 +40,75 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterHTMLDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterHTMLDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterHTMLDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
-            //PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged;
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterHTMLDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterHTMLDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterHTMLDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterHTMLDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
     }
 }

+ 79 - 0
PDF Office/Views/Dialog/ConverterDialogs/ConverterImgDialog.xaml.cs

@@ -1,7 +1,10 @@
 using ComPDFKit_Conversion.Converter;
 using ComPDFKit_Conversion.Options;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
 using PDF_Office.ViewModels.Dialog.ConverterDialogs;
 using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -19,6 +22,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterImgDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -30,7 +41,75 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterImgDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterImgDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterImgDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterImgDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterImgDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterImgDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterImgDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
 
         private void ImageTypeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

+ 81 - 2
PDF Office/Views/Dialog/ConverterDialogs/ConverterPPTDialog.xaml.cs

@@ -1,4 +1,8 @@
-using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -16,6 +20,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterPPTDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,8 +40,75 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterPPTDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterPPTDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterPPTDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
-            //PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged;
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterPPTDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterPPTDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterPPTDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterPPTDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
     }
 }

+ 17 - 17
PDF Office/Views/Dialog/ConverterDialogs/ConverterProgressBarDialog.xaml

@@ -1,19 +1,19 @@
 <UserControl x:Class="PDF_Office.Views.Dialog.ConverterDialogs.ConverterProgressBarDialog"
-             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:prism="http://prismlibrary.com/"             
-             prism:ViewModelLocator.AutoWireViewModel="True"
-             d:DesignHeight="40"
-             d:DesignWidth="220"
-             mc:Ignorable="d">
-    <Grid Height="40" Width="220">
-        <StackPanel>
-            <StackPanel Orientation="Horizontal" Margin="13,5,0,10">
-                <TextBlock Text="Converte  .  .  . "></TextBlock>
-            </StackPanel>
-            <ProgressBar Minimum="0" Maximum="{Binding PageNumber}" Value="{Binding PageIndex}"  Height="4" Width="194"/>
-        </StackPanel>
-    </Grid>
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:prism="http://prismlibrary.com/"             
+             prism:ViewModelLocator.AutoWireViewModel="True"
+             d:DesignHeight="40"
+             d:DesignWidth="220"
+             mc:Ignorable="d">
+    <Grid Height="40" Width="220">
+        <StackPanel>
+            <StackPanel Orientation="Horizontal" Margin="13,5,0,10">
+                <TextBlock Text="Converte  .  .  . "></TextBlock>
+            </StackPanel>
+            <ProgressBar Minimum="0" Maximum="{Binding PageNumber}" Value="{Binding PageIndex}"  Height="4" Width="194"/>
+        </StackPanel>
+    </Grid>
 </UserControl>

+ 80 - 2
PDF Office/Views/Dialog/ConverterDialogs/ConverterRTFDialog.xaml.cs

@@ -1,4 +1,9 @@
-using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -16,6 +21,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterRTFDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,8 +41,73 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+            
+            string PageRangeSelectIndex = ((ConverterRTFDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterRTFDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterRTFDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
-            //PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged;
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterRTFDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterRTFDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterRTFDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterRTFDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
     }
 }

+ 81 - 2
PDF Office/Views/Dialog/ConverterDialogs/ConverterTextDialog.xaml.cs

@@ -1,4 +1,8 @@
-using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -16,6 +20,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterTextDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,8 +40,75 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterTextDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterTextDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterTextDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
-            //PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged;
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterTextDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterTextDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterTextDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterTextDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
     }
 }

+ 81 - 1
PDF Office/Views/Dialog/ConverterDialogs/ConverterWordDialog.xaml.cs

@@ -1,4 +1,8 @@
-using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using System.Diagnostics;
+using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
 
@@ -17,6 +21,14 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
         private void ConverterPreview_Loaded(object sender, System.Windows.RoutedEventArgs e)
         {
             ConverterPreview.document = ((ConverterWordDialogViewModel)this.DataContext).currentViewer.Document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, "1-" + ConverterPreview.document.PageCount.ToString(), ConverterPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             ConverterPreview.PageIndex.Text = ConverterPreview.document.PageCount.ToString();
         }
@@ -28,7 +40,75 @@ namespace PDF_Office.Views.Dialog.ConverterDialogs
                 ComboBoxItem comboBoxItem = new ComboBoxItem();
                 comboBoxItem.Content = "当前页面";
                 PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
+
+            }
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterWordDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterWordDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterWordDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ConverterPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ConverterPreview.CurrentIndex = 0;
+                ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+                ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
             }
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((ConverterWordDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((ConverterWordDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((ConverterWordDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "2" || PageRangeSelectIndex == "3")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText, true);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            if (PageRangeSelectIndex == "1")
+            {
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ConverterPreview.PageIndexLists, (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString(), currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+               ((ConverterWordDialogViewModel)this.DataContext).CurrentPageIndex = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            }
+            ConverterPreview.PageIndex.Text = (ConverterPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ConverterPreview.CurrentIndex = 0;
+            ConverterPreview.CurrentPage.Text = (ConverterPreview.PageIndexLists[ConverterPreview.CurrentIndex] + 1).ToString();
+            ConverterPreview.AwaitRenderBitmap(ConverterPreview.document);
         }
     }
 }

+ 1 - 1
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageExtractDialog.xaml

@@ -35,7 +35,7 @@
                     <Grid Grid.Row="0">
                         <StackPanel Orientation="Vertical" Margin="0,40,0,0">
                             <TextBlock Text="页面范围" FontWeight="ExtraBlack" Width="56" Height="22" HorizontalAlignment="Left"/>
-                            <cus:WritableComboBox Width="208" Height="32" HorizontalAlignment="Left" Margin="0,20,0,0" Text="{Binding PageRangeText,Mode=TwoWay}" SelectedIndex="{Binding PageRangeSelectIndex,Mode=TwoWay}"></cus:WritableComboBox>
+                            <cus:WritableComboBox x:Name="PageRangeComboBox" Width="208" Height="32" HorizontalAlignment="Left" Margin="0,20,0,0" Text="{Binding PageRangeText,Mode=TwoWay}" SelectedIndex="{Binding PageRangeSelectIndex,Mode=TwoWay}" Loaded="WritableComboBox_Loaded"></cus:WritableComboBox>
                         </StackPanel>
                     </Grid>
                     <Grid Grid.Row="1">

+ 73 - 1
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageExtractDialog.xaml.cs

@@ -1,6 +1,10 @@
-using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.ConverterDialogs;
+using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -29,9 +33,77 @@ namespace PDF_Office.Views.Dialog.HomePageToolsDialogs
         private void PageTurningPreview_Loaded(object sender, RoutedEventArgs e)
         {
             ExtractPreview.document = ((HomePageExtractDialogViewModel)this.DataContext).document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref ExtractPreview.PageIndexLists, "1-" + ExtractPreview.document.PageCount.ToString(), ExtractPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             ExtractPreview.AwaitRenderBitmap(ExtractPreview.document);
             ExtractPreview.PageIndex.Text = ExtractPreview.document.PageCount.ToString();
 
         }
+
+        private void WritableComboBox_Loaded(object sender, RoutedEventArgs e)
+        {
+
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((HomePageExtractDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((HomePageExtractDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((HomePageExtractDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref ExtractPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                ExtractPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                ExtractPreview.PageIndex.Text = (ExtractPreview.PageIndexLists.Last<int>() + 1).ToString();
+                ExtractPreview.CurrentIndex = 0;
+                ExtractPreview.CurrentPage.Text = (ExtractPreview.PageIndexLists[ExtractPreview.CurrentIndex] + 1).ToString();
+                ExtractPreview.AwaitRenderBitmap(ExtractPreview.document);
+            }
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((HomePageExtractDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((HomePageExtractDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((HomePageExtractDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "1" || PageRangeSelectIndex == "2")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref ExtractPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            ExtractPreview.PageIndex.Text = (ExtractPreview.PageIndexLists.Last<int>() + 1).ToString();
+            ExtractPreview.CurrentIndex = 0;
+            ExtractPreview.CurrentPage.Text = (ExtractPreview.PageIndexLists[ExtractPreview.CurrentIndex] + 1).ToString();
+            ExtractPreview.AwaitRenderBitmap(ExtractPreview.document);
+        }
     }
 }

+ 14 - 1
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageInsertDialog.xaml.cs

@@ -1,6 +1,9 @@
-using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs;
+using PDF_Office.CustomControl;
+using PDF_Office.Helper;
+using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
 using System.Text.RegularExpressions;
@@ -52,8 +55,18 @@ namespace PDF_Office.Views.Dialog.HomePageToolsDialogs
         private void PageTurningPreview_Loaded(object sender, RoutedEventArgs e)
         {
             InsertPreview.document = ((HomePageInsertDialogViewModel)this.DataContext).document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref InsertPreview.PageIndexLists, "1-" + InsertPreview.document.PageCount.ToString(), InsertPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             InsertPreview.AwaitRenderBitmap(InsertPreview.document);
             InsertPreview.PageIndex.Text = InsertPreview.document.PageCount.ToString();
         }
+
+
     }
 }

+ 1 - 1
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageSplitDialog.xaml

@@ -50,7 +50,7 @@
                             <StackPanel Orientation="Horizontal">
                                 <RadioButton VerticalAlignment="Center" IsChecked="{Binding CustomPageRangeIsCheck}" Command="{Binding CustomPageRangeCommand}"></RadioButton>
                                 <TextBlock Text="按特定页面拆分" VerticalAlignment="Center"></TextBlock>
-                                <cus:WritableComboBox  Height="32" Width="183" Text="{Binding PageRangeText, Mode=TwoWay}" IsEnabled="{Binding CustomPageRangeIsEnabled}" SelectedIndex="{Binding PageRangeSelectIndex, Mode=TwoWay}"/>
+                                <cus:WritableComboBox x:Name="PageRangeComboBox"  Height="32" Width="183" Text="{Binding PageRangeText, Mode=TwoWay}" IsEnabled="{Binding CustomPageRangeIsEnabled}" SelectedIndex="{Binding PageRangeSelectIndex, Mode=TwoWay}" Loaded="WritableComboBox_Loaded"/>
                             </StackPanel>
                         </StackPanel>
                     </Grid>

+ 71 - 0
PDF Office/Views/Dialog/HomePageToolsDialogs/HomePageSplitDialog.xaml.cs

@@ -1,9 +1,11 @@
 using PDF_Office.CustomControl;
+using PDF_Office.Helper;
 using PDF_Office.Model.Dialog.ToolsDialogs.SaftyDialogs;
 using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs;
 using PDF_Office.ViewModels.Dialog.ToolsDialogs.SaftyDialogs;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -55,8 +57,77 @@ namespace PDF_Office.Views.Dialog.HomePageToolsDialogs
         private void PageTurningPreview_Loaded(object sender, RoutedEventArgs e)
         {
             SplitPreview.document = ((HomePageSplitDialogViewModel)this.DataContext).document;
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+            if (!CommonHelper.GetPagesInRange(ref SplitPreview.PageIndexLists, "1-" + SplitPreview.document.PageCount.ToString(), SplitPreview.document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                Trace.WriteLine("输入不对");
+                MessageBoxEx.Show("输入不对");
+                return;
+            }
             SplitPreview.AwaitRenderBitmap(SplitPreview.document);
             SplitPreview.PageIndex.Text = SplitPreview.document.PageCount.ToString();
+           
+        }
+
+        private void WritableComboBox_Loaded(object sender, RoutedEventArgs e)
+        {
+
+            PageRangeComboBox.writableComboBox.SelectionChanged += PageRangeComboBox_SelectionChanged;
+            PageRangeComboBox.writableTextBox.TextChanged += WritableTextBox_TextChanged;
+        }
+
+        private void WritableTextBox_TextChanged(object sender, TextChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((HomePageSplitDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((HomePageSplitDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((HomePageSplitDialogViewModel)this.DataContext).PageRangeText;
+            HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText);
+            char[] enumerationSeparator = new char[] { ',' };
+            char[] rangeSeparator = new char[] { '-' };
+
+            if (!CommonHelper.GetPagesInRange(ref SplitPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+            { //TODO
+                SplitPreview.PageIndexLists.Add(0);
+
+                return;
+            }
+            else
+            {
+                SplitPreview.PageIndex.Text = (SplitPreview.PageIndexLists.Last<int>() + 1).ToString();
+                SplitPreview.CurrentIndex = 0;
+                SplitPreview.CurrentPage.Text = (SplitPreview.PageIndexLists[SplitPreview.CurrentIndex] + 1).ToString();
+                SplitPreview.AwaitRenderBitmap(SplitPreview.document);
+            }
+
+        }
+
+        private void PageRangeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+
+            string PageRangeSelectIndex = ((HomePageSplitDialogViewModel)this.DataContext).PageRangeSelectIndex;
+            var currentViewer = ((HomePageSplitDialogViewModel)this.DataContext).currentViewer;
+            string PageRange = "";
+            var PageRangeText = ((HomePageSplitDialogViewModel)this.DataContext).PageRangeText;
+            if (PageRangeSelectIndex == "0" || PageRangeSelectIndex == "1" || PageRangeSelectIndex == "2")
+            {
+                HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref PageRange, PageRangeText);
+                char[] enumerationSeparator = new char[] { ',' };
+                char[] rangeSeparator = new char[] { '-' };
+                if (!CommonHelper.GetPagesInRange(ref SplitPreview.PageIndexLists, PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
+                { //TODO
+                    Trace.WriteLine("输入不对");
+                    MessageBoxEx.Show("输入不对");
+                    return;
+                }
+
+            }
+            SplitPreview.PageIndex.Text = (SplitPreview.PageIndexLists.Last<int>() + 1).ToString();
+            SplitPreview.CurrentIndex = 0;
+            SplitPreview.CurrentPage.Text = (SplitPreview.PageIndexLists[SplitPreview.CurrentIndex] + 1).ToString();
+            SplitPreview.AwaitRenderBitmap(SplitPreview.document);
         }
     }
 }