liyijie 2 роки тому
батько
коміт
76a9cf7868

+ 69 - 1
PDF Office/Helper/EditToolsHelper.cs

@@ -9,7 +9,9 @@ using System.Windows.Media.Imaging;
 using System.Windows;
 using PDF_Office.Model.EditTools.Background;
 using PDF_Office.Model.EditTools.Watermark;
-
+using ComPDFKit.PDFDocument;
+using System.Windows.Controls;
+
 namespace PDF_Office.Helper
 {
     public static class EditToolsHelper
@@ -71,6 +73,72 @@ namespace PDF_Office.Helper
 #endif
                 }
             }
+        }
+
+        public static string ParseRange(string str)
+        {
+            try
+            {
+                string strTemp = "";
+                string strParse = "";
+                for (int i = 0; i < str.Length; i++)
+                {
+                    if (Int32.TryParse(str.Substring(i, 1), out _))
+                    {
+                        strTemp += str[i];
+                    }
+                    else
+                    {
+                        strParse += int.Parse(strTemp) - 1;
+                        strTemp = "";
+                        strParse += str.Substring(i, 1);
+                    }
+                }
+                strParse += int.Parse(strTemp) - 1;
+                return strParse;
+            }
+            catch (Exception e)
+            {
+                return " ";
+            }
+        }
+
+        public static void GetPageRange(int SelectedIndex,CPDFDocument document ,ref string PageRange, string pageRangeText)
+        {
+           
+            switch (SelectedIndex)
+            {
+                case 0:
+                    {
+                        PageRange = "0-" + document.PageCount;
+                    }
+                    break;
+                case 1:
+                    {
+                       PageRange = "0";
+                        for (int i = 2; i <= document.PageCount; i += 2)
+                            PageRange =PageRange + "," + i;
+                    }
+                    break;
+                case 2:
+                    if (document.PageCount >= 2)
+                    {
+                        PageRange = "1";
+                        for (int i = 3; i <= document.PageCount; i += 2)
+                            PageRange = PageRange + "," + i;
+                    }
+                    else
+                    {
+                        MessageBox.Show("超出页面");
+                    }
+                    break;
+                case 3:
+                    PageRange = ParseRange(pageRangeText);
+                    Trace.WriteLine("PageRange : " + PageRange);
+                    break;
+                default:
+                    break;
+            }
         }
     }
 }

+ 20 - 20
PDF Office/Model/EditTools/Watermark/WatermarkCreateModel.cs

@@ -17,102 +17,102 @@ namespace PDF_Office.Model.EditTools.Watermark
         /// <summary>
         /// 水印类型;
         /// </summary>
-        public C_Watermark_Type WatermarkType { get; set; } = C_Watermark_Type.WATERMARK_TYPE_TEXT;
+        public C_Watermark_Type WatermarkType  = C_Watermark_Type.WATERMARK_TYPE_TEXT;
 
         /// <summary>
         /// 文本水印内容;
         /// </summary>
-        public string Text { get; set; } = "";
+        public string Text  = "";
 
         /// <summary>
         /// 文本水印内容;
         /// </summary>
-        public string FontName { get; set; } = "";
+        public string FontName  = "";
 
         /// <summary>
         /// 文本水印颜色;
         /// </summary>
-        public string TextColor { get; set; } = "#FFFFFF";
+        public byte[] TextColor=null;
 
         /// <summary>
         /// 文本水印大小;
         /// </summary>
-        public string TextSize { get; set; } = "5";
+        public string TextSize  = "5";
 
         /// <summary>
         /// 图片水印内容;
         /// </summary>
-        public byte[] ImageArray { get; set; } = null;
+        public byte[] ImageArray  = null;
 
         /// <summary>
         /// 图片水印大小;
         /// </summary>
-        public float ImageSize { get; set; } = 5;
+        public float ImageSize = 5;
 
         /// <summary>
         /// 图片水印宽度;
         /// </summary>
-        public int ImageWidth { get; set; } = 100;
+        public int ImageWidth = 100;
 
         /// <summary>
         /// 图片水印高度;
         /// </summary>
-        public int ImageHeight { get; set; } = 100;
+        public int ImageHeight = 100;
 
         /// <summary>
         /// 水印页面范围;
         /// </summary>
-        public string PageRange { get; set; } = "1";
+        public string PageRange  = "1";
 
         /// <summary>
         /// 水印垂直位置;
         /// </summary>
-        public C_Watermark_Vertalign WatermarkVertalign { get; set; } = C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER;
+        public C_Watermark_Vertalign WatermarkVertalign = C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER;
 
         /// <summary>
         /// 水印水平位置;
         /// </summary>
-        public C_Watermark_Horizalign WatermarkHorizalign { get; set; } = C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER;
+        public C_Watermark_Horizalign WatermarkHorizalign  = C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER;
 
         /// <summary>
         /// 水印相对垂直距离;
         /// </summary>
-        public float VertOffset { get; set; } = 0;
+        public float VertOffset = 0;
 
         /// <summary>
         /// 水印相对水平距离;
         /// </summary>
-        public float HorizOffset { get; set; } = 0;
+        public float HorizOffset  = 0;
 
         /// <summary>
         /// 水印石否平铺;
         /// </summary>
-        public bool Isfull { get; set; } = false;
+        public bool Isfull  = false;
 
         /// <summary>
         /// 水印平铺水平间距;
         /// </summary>
-        public float HorizontalSpacing { get; set; } = 0;
+        public float HorizontalSpacing  = 0;
 
         /// <summary>
         /// 水印平铺垂直间距;
         /// </summary>
-        public float VerticalSpacing { get; set; } = 0;
+        public float VerticalSpacing  = 0;
 
         /// <summary>
         /// 水印旋转角度;
         /// </summary>
-        public float Rotation { get; set; } = 0;
+        public float Rotation = 0;
 
         /// <summary>
         /// 水印透明度;
         /// </summary>
-        public byte Opacity { get; set; } = 100;
+        public byte Opacity  = 100;
 
         /// <summary>
         /// 水印是否在页面上方;
         /// </summary>
-        public bool IsFront { get; set; } = false;
+        public bool IsFront = false;
 
     }
 }

+ 3 - 3
PDF Office/SDKLisence.xml

@@ -1,7 +1,7 @@
 <Lisences
-	  devKey = "ehrnKqkWc1XSEAWyPUt6+95GzCoLEyoKrCbsUuJkCqGmxmP5ozX4bS0R6crHItQVNTFvC5mBZ1M7QjJ6Ekdu4Daj7PM+EDLTBKbFJinK4Ri9E5E2X+a9vF5zSj0TkIscQPVnwj9ikxAFOWGIyybMwQQzwc8a4j1cGOqGXQRDMMY="
-    devSecret = "mG0c3O3Mzeu5dkZJW3gpqq9uA7o7EGQveSC38Q8TK4gQurxTxGuBlGAhs0P1mD3X3bHT+AHfcLiymaqE4DY7kTFHoPs9I3tl5ErS+BHdzHRhrp9sGpqfp0B228KI+IMTu4aGVjtYuk+Uxs/kosIBw1367/WkJ00tM7U7tttD6ccHhEu996bvBgqf8Sw8OekQKQq13VBewK5AckaDux4W7SGRhCUNWC4MItkr36JnXMD2tiFQYzMG8C66HYmRGSLh"
-   userKey = "iBPRM/Tz8b6Z1G2GQt52X7hiNCGfVYXztnPjalgrgARvqfKV6lFNH8QeScTzBRYI8GGFpwelfgh790Kd9JmL7V4adI1jCiFHUT2DLT7QucxY5Nkgys2aJItQS482Ck2G2Xf8gNgojxYxRt65o/MEzkj93foj8qIdfHagXsSorSs="
+	devKey = "sTHSivIW4YnZQavIYDLVw4vaFcN5DQTUtRGrVyv5p9aeaHX3GirG/MBxl6Wy9TJbNOwR4CU6LPjHmGe3Po3OtBCPqIRheam9+LomScw3AvoUTHFlG1134e2J4enF43WJQ6PyOnjwZqsG1kUdlBPNztkoPzDAE2pQKgZWf6V2i34="
+    devSecret = "mG0c3O3Mzeu5dkZJW3gpqq9uA7o7EGQveSC38Q8TK4gQurxTxGuBlGAhs0P1mD3X3bHT+AHfcLiymaqE4DY7kTFHoPs9I3tl5ErS+BHdzHRhrp9sGpqfp0B228KI+IMTu4aGVjtYuk+Uxs/kosIBw1367/WkJ00tM7U7tttD6cfaiHpW8pgW2aur3AxuQIBBLuJD5gcmNxTYW3KA32JLG8alfyXjKFVS3gka9bngvwfZ7GuNXybjKlmz1tnN6iVHpnbSj+xOHhWEperY4HHrSg=="
+	userKey = "iBPRM/Tz8b6Z1G2GQt52X7hiNCGfVYXztnPjalgrgARvqfKV6lFNH8QeScTzBRYI8GGFpwelfgh790Kd9JmL7V4adI1jCiFHUT2DLT7QucxY5Nkgys2aJItQS482Ck2G2Xf8gNgojxYxRt65o/MEzkj93foj8qIdfHagXsSorSs="
 	userSecret="mG0c3O3Mzeu5dkZJW3gpqq9uA7o7EGQveSC38Q8TK4ivEHOmPIqbfhpDnKKj+7Ymj2rXQvfZRmke06HMV+3tt064G64WjPW8+EbGCNZaAh1hrp9sGpqfp0B228KI+IMTu4aGVjtYuk+Uxs/kosIBw1FKJi6HYB+DuugQyaqI2prfej861QnJrU4s2T/npZK/"
 	ConverterDevKey="Eahwo7OZAYHJaCF7TJQYKSVqC62MzfBdllVXnC5BRR5BQFDKnQ1FJtCRVdug+VNg/ti+/DeA5Sq4IH2CBpQjAZst5705uk5Sz0ZwRu8Qdn9HFGwh2pG6dJEIrl7lOccoZS6+1IxgOTcTeHqYpym3NsmtbhBWE848Pvme3scpW28="
 	ConverterDevSecret="mG0c3O3Mzeu5dkZJW3gpqq9uA7o7EGQveSC38Q8TK4iccr16WMBclnQACarlyblNUvAm/S8uFbhXMvxwgBSgULSsrbuyF/SIZ3I+dl0qU8EiR4IKrcJxus3VRNu+jx8P7CGq2BlSjPVXRHBI1lV8ukpCIUGmcK+P+Z0QbYdkAHAm6NPgs2c4tp1jOFPPbnUkTtX7riDb9xRCx1YNm3/+xd96PzrVCcmtTizZP+elkr8="

+ 53 - 11
PDF Office/ViewModels/EditTools/Watermark/WatermarkCreateFileContentViewModel.cs

@@ -1,18 +1,24 @@
 using ComPDFKit.PDFWatermark;
+using ComPDFKitViewer.PdfViewer;
+using PDF_Office.CustomControl;
 using PDF_Office.Helper;
 using PDF_Office.Model.EditTools.Watermark;
+using PDF_Office.Model.PageEdit;
 using Prism.Commands;
 using Prism.Mvvm;
 using Prism.Regions;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 
 namespace PDF_Office.ViewModels.EditTools.Watermark
 {
-    public class WatermarkCreateFileContentViewModel : BindableBase,INavigationAware
+    public class WatermarkCreateFileContentViewModel : BindableBase, INavigationAware
     {
-        public WatermarkInfo WatermarkInfo { get; set; } = new WatermarkInfo();
+        public WatermarkInfo WatermarkInfo  = new WatermarkInfo();
+
+        public CPDFViewer currentViewer;
 
         private List<string> _opacityList = new List<string>();
         public List<string> OpacityList
@@ -164,6 +170,19 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             }
         }
 
+        public string PageRangeText{get;set;} = "0";
+
+        private int _pageRangeSelectIndex = 0;
+        public int PageRangeSelectIndex
+        {
+            get { return _pageRangeSelectIndex; }
+            set
+            {
+                SetProperty(ref _pageRangeSelectIndex, value);
+                EditToolsHelper.GetPageRange(PageRangeSelectIndex, currentViewer.Document,ref WatermarkInfo.PageRange, PageRangeText);
+            }
+        }
+
         private int _isFrontSelectedIndex = 0;
         public int IsFrontSelectedIndex
         {
@@ -174,27 +193,40 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
                 SetIsFront(IsFrontSelectedIndex);
             }
         }
-        
+
+        private string _fileNameText = "";
+        public string FileNameText
+        {
+            get { return _fileNameText; }
+            set
+            {
+                SetProperty(ref _fileNameText, value);
+            }
+        }
+
+        private ObservableDictionary<string, bool> _getLocationFromNumber = new ObservableDictionary<string, bool>();
+        public ObservableDictionary<string, bool> GetLocationFromNumber
+        {
+            get { return _getLocationFromNumber; }
+            set { _getLocationFromNumber = value; }
+        }
+
 
         public DelegateCommand<object> ChangeLocationCommand { get; set; }
 
+        public DelegateCommand OpenFileCommand { get; set; }
+
         public WatermarkCreateFileContentViewModel()
         {
 
             ChangeLocationCommand = new DelegateCommand<object>(ChangeLocation);
+            OpenFileCommand = new DelegateCommand(OpenFile);
             InitList();
             WatermarkInfo.WatermarkHorizalign = C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER;
             WatermarkInfo.WatermarkVertalign = C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER;
             InitLocationButtonMatrix();
         }
 
-        private ObservableDictionary<string, bool> _getLocationFromNumber = new ObservableDictionary<string, bool>();
-        public ObservableDictionary<string, bool> GetLocationFromNumber
-        {
-            get { return _getLocationFromNumber; }
-            set { _getLocationFromNumber = value; }
-        }
-
         private void SetIsFront(int Index)
         {
             if (Index == 0)
@@ -242,6 +274,17 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             }
         }
 
+        public void OpenFile(){
+            System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
+            dlg.Multiselect = false;
+            dlg.Filter = "PDF|*.png;*.jpg;";
+            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+            {
+                FileNameText = dlg.FileName;
+                EditToolsHelper.ChooseFile(dlg.FileName, ref WatermarkInfo);
+            }
+        }
+
         public bool IsNavigationTarget(NavigationContext navigationContext)
         {
             return true;
@@ -253,7 +296,6 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
 
         public void OnNavigatedTo(NavigationContext navigationContext)
         {
-            
         }
     }
 }

+ 32 - 1
PDF Office/ViewModels/EditTools/Watermark/WatermarkCreateTextContentViewModel.cs

@@ -1,6 +1,8 @@
 using ComPDFKit.PDFDocument;
 using ComPDFKit.PDFWatermark;
+using ComPDFKitViewer.PdfViewer;
 using PDF_Office.Helper;
+using PDF_Office.Model.EditTools.Background;
 using PDF_Office.Model.EditTools.Watermark;
 using Prism.Commands;
 using Prism.Mvvm;
@@ -13,7 +15,9 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
 {
     public class WatermarkCreateTextContentViewModel : BindableBase,INavigationAware
     {
-        public WatermarkInfo WatermarkInfo { get; set; } = new WatermarkInfo();
+        public WatermarkInfo WatermarkInfo = new WatermarkInfo();
+
+        public CPDFViewer currentViewer;
 
         private List<string> _opacityList = new List<string>();
         public List<string> OpacityList
@@ -245,6 +249,33 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             }
         }
 
+        private string _stringColor = "#FF0000";
+        public string StringColor
+        {
+            get
+            {
+                return _stringColor;
+            }
+            set
+            {
+                SetProperty(ref _stringColor, value);
+                WatermarkInfo.TextColor = EditToolsHelper.ConvertColor(value); 
+            }
+        }
+
+        public string PageRangeText { get; set; } = "0";
+
+        private int _pageRangeSelectIndex = 0;
+        public int PageRangeSelectIndex
+        {
+            get { return _pageRangeSelectIndex; }
+            set
+            {
+                SetProperty(ref _pageRangeSelectIndex, value);
+                EditToolsHelper.GetPageRange(PageRangeSelectIndex, currentViewer.Document, ref WatermarkInfo.PageRange, PageRangeText);
+            }
+        }
+
         private ObservableDictionary<string, bool> _getLocationFromNumber = new ObservableDictionary<string, bool>();
         public ObservableDictionary<string, bool> GetLocationFromNumber
         {

+ 3 - 3
PDF Office/Views/EditTools/Watermark/WatermarkCreateFileContent.xaml

@@ -16,8 +16,8 @@
         </Grid.RowDefinitions>
         <Grid Grid.Row="0" Width="228" Margin="0,16,0,0">
             <StackPanel Orientation="Horizontal">
-                <TextBox Name="FileNameTextBox" IsEnabled="False" Text="XXXXXXXXXX.pdf" FontSize="14" VerticalContentAlignment="Center"  Width="188"></TextBox>
-                <Button Content="+" Width="32" Height="32" Margin="8,0,0,0"></Button>
+                <TextBox Name="FileNameTextBox" IsReadOnly="True"  Text="{Binding FileNameText}" FontSize="14" VerticalContentAlignment="Center"  Width="188"></TextBox>
+                <Button Content="+" Width="32" Height="32" Margin="8,0,0,0" Command="{Binding OpenFileCommand}"></Button>
             </StackPanel>
         </Grid>
         <Grid Grid.Row="1" Visibility="{Binding ElementName=FileNameTextBox,Path=Text}">
@@ -101,7 +101,7 @@
             <Grid Width="228" Grid.Row="2"  Margin="16,10,16,4" Grid.RowSpan="2">
                 <StackPanel Orientation="Vertical">
                     <TextBlock Text="页面范围" FontSize="12" Foreground="#666666" Height="20" Width="48" HorizontalAlignment="Left"></TextBlock>
-                    <ComboBox Height="32" Margin="0,8,0,0"></ComboBox>
+                    <cus:WritableComboBox Height="32" Margin="0,8,0,0" Text="{Binding PageRangeText,Mode=TwoWay}" SelectedIndex="{Binding PageRangeSelectIndex,Mode=TwoWay}"></cus:WritableComboBox>
                 </StackPanel>
             </Grid>
         </Grid>

+ 12 - 5
PDF Office/Views/EditTools/Watermark/WatermarkCreateTextContent.xaml

@@ -29,10 +29,17 @@
                         <Button Width="34.67" Height="32"></Button>
                         <Button Width="34.67" Height="32"></Button>
                     </StackPanel>
-                    <StackPanel Orientation="Horizontal" Margin="8,0,0,0">
-                        <Button Width="33" Height="32"></Button>
-                        <Button Width="33" Height="32"></Button>
-                    </StackPanel>
+                    <Button Height="32" Width="66"  Margin="8,0,0,0">
+                        <Grid Height="32" Width="66" HorizontalAlignment="Center" VerticalAlignment="Center">
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition></ColumnDefinition>
+                                <ColumnDefinition></ColumnDefinition>
+                            </Grid.ColumnDefinitions>
+                            <Grid Grid.Column="0" Height="22" Width="22">
+                                <Rectangle Fill="{Binding StringColor, Mode=TwoWay}" RadiusX="20" RadiusY="20"></Rectangle>
+                            </Grid>
+                        </Grid>
+                    </Button>
                 </StackPanel>
             </StackPanel>
         </Grid>
@@ -111,7 +118,7 @@
         <Grid Width="228" Grid.Row="4"  Margin="0,8,0,4">
             <StackPanel Orientation="Vertical">
                 <TextBlock Text="页面范围" FontSize="12" Foreground="#666666" Height="20" Width="24" HorizontalAlignment="Left"></TextBlock>
-                <cus:WritableComboBox Height="32" Margin="0,8,0,0"></cus:WritableComboBox>
+                <cus:WritableComboBox Height="32" Margin="0,8,0,0" Text="{Binding PageRangeText,Mode=TwoWay}" SelectedIndex="{Binding PageRangeSelectIndex,Mode=TwoWay}"></cus:WritableComboBox>
             </StackPanel>
         </Grid>
     </Grid>