liuaoran před 2 roky
rodič
revize
0d5f9702c2

+ 17 - 7
PDF Office/Helper/EditToolsHelper.cs

@@ -15,7 +15,7 @@ using ComPDFKit.PDFPage;
 using static Dropbox.Api.TeamLog.PaperDownloadFormat;
 using Microsoft.Office.Interop.Word;
 using Task = System.Threading.Tasks.Task;
-using System.Drawing.Imaging; 
+using System.Drawing.Imaging;
 using System.Windows.Media;
 
 namespace PDF_Office.Helper
@@ -33,7 +33,17 @@ namespace PDF_Office.Helper
             return rgb_array;
         }
 
-        public static void ChooseFile(string filePath,ref BackgroundInfo backgroundInfo)
+        public static Color ConvertColor(byte[] rgb_array)
+        {
+            Color color = new Color();
+            color.R = rgb_array[0];
+            color.G = rgb_array[1];
+            color.B = rgb_array[2];
+
+            return color;
+        }
+
+        public static void ChooseFile(string filePath, ref BackgroundInfo backgroundInfo)
         {
             using (FileStream fileData = File.OpenRead(filePath))
             {
@@ -112,21 +122,21 @@ namespace PDF_Office.Helper
             }
         }
 
-        public static void GetPageRange(int SelectedIndex,CPDFDocument document ,ref string PageRange, string pageRangeText)
+        public static void GetPageRange(int SelectedIndex, CPDFDocument document, ref string PageRange, string pageRangeText)
         {
-           
+
             switch (SelectedIndex)
             {
                 case 0:
                     {
-                        PageRange = "0-" + (document.PageCount-1);
+                        PageRange = "0-" + (document.PageCount - 1);
                     }
                     break;
                 case 1:
                     {
-                       PageRange = "0";
+                        PageRange = "0";
                         for (int i = 2; i <= (document.PageCount - 1); i += 2)
-                            PageRange =PageRange + "," + i;
+                            PageRange = PageRange + "," + i;
                     }
                     break;
                 case 2:

+ 8 - 0
PDF Office/Model/EditTools/Background/BackgroundCreateModel.cs

@@ -95,5 +95,13 @@ namespace PDF_Office.Model.EditTools.Background
         /// </summary>
         public string PageRange = "0";
 
+        /// <summary>
+        /// 页面范围索引;
+        /// 0:全部页面
+        /// 1:奇数页
+        /// 2;偶数页
+        /// 3:自定义页
+        /// </summary>
+        public int PageRangeIndex = 0;
     }
 }

+ 5 - 4
PDF Office/ViewModels/EditTools/Background/BackgroundCreateBaseContentViewModel.cs

@@ -1,4 +1,5 @@
 using ComPDFKitViewer.PdfViewer;
+using DryIoc;
 using PDF_Office.EventAggregators;
 using PDF_Office.Model;
 using PDF_Office.Model.EditTools.Background;
@@ -146,10 +147,10 @@ namespace PDF_Office.ViewModels.EditTools.Background
 
         public void EnterSelectedCreateMod(string currentCreateName)
         {
-            NavigationParameters param = new NavigationParameters();
-            param.Add(ParameterNames.PDFViewer, PDFViewer);
-            backgroundCreateRegion.RequestNavigate(BackgroundCreateRegionName, currentCreateName, param);
-            backgroundCreateVisible = System.Windows.Visibility.Visible;
+                NavigationParameters param = new NavigationParameters();
+                param.Add(ParameterNames.PDFViewer, PDFViewer);
+                backgroundCreateRegion.RequestNavigate(BackgroundCreateRegionName, currentCreateName, param);
+                backgroundCreateVisible = System.Windows.Visibility.Visible;
         }
 
 

+ 133 - 11
PDF Office/ViewModels/EditTools/Background/BackgroundCreateColorContentViewModel.cs

@@ -15,6 +15,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.ComponentModel;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -119,7 +120,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
                 BackgroundInfo.HorizOffset = float.Parse(HorizontalOffsetValue);
                 eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
             }
-        } 
+        }
 
         private ObservableDictionary<string, bool> _getLocationFromNumber = new ObservableDictionary<string, bool>();
         public ObservableDictionary<string, bool> GetLocationFromNumber
@@ -166,6 +167,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
             set
             {
                 SetProperty(ref _pageRangeSelectIndex, value);
+                BackgroundInfo.PageRangeIndex = PageRangeSelectIndex;
                 EditToolsHelper.GetPageRange(PageRangeSelectIndex, PDFViewer.Document, ref BackgroundInfo.PageRange, PageRangeText);
                 eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
             }
@@ -251,6 +253,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
             }
         }
 
+
         public void ChangeColor(object e)
         {
             if (e != null)
@@ -276,6 +279,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
                 backgroundItem.opacity = backgroundInfo.Opacity;
                 backgroundItem.rotation = backgroundInfo.Rotation;
                 backgroundItem.scale = backgroundInfo.Scale;
+                backgroundItem.PageRangeIndex = backgroundInfo.PageRangeIndex;
                 backgroundItem.pageRange = backgroundInfo.PageRange;
             }
             //  backgroundItem.pagRangeMode = backgroundInfo.PageRange;
@@ -286,14 +290,70 @@ namespace PDF_Office.ViewModels.EditTools.Background
             var backgroundItem = new BackgroundItem();
             ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
             backgroundItem.templateName += Settings.Default.WatermarkIndex.ToString();
-            Settings.Default.BackgroundTemplateList.Add(backgroundItem);
-            Settings.Default.Save();
+            try
+            {
+                //创建缓存文件夹
+                string folderPath = Path.Combine(App.CurrentPath, "Background");
+                //有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
+                //保险措施(猜测)
+                if (File.Exists(folderPath))
+                {
+                    File.Delete(folderPath);
+                }
+
+                DirectoryInfo tempfolder = new DirectoryInfo(folderPath);
+                if (!tempfolder.Exists)
+                {
+                    tempfolder.Create();
+                }
+
+                //预览图缓存
+                string saveName = Guid.NewGuid().ToString();
+                string savePath = Path.Combine(folderPath, saveName);
+                System.Windows.Size pageSize = PDFViewer.Document.GetPageSize(0);
+                CPDFDocument tempDocument = CPDFDocument.CreateDocument();
+                if (tempDocument != null)
+                {
+                    tempDocument.InsertPage(0, pageSize.Width, pageSize.Height, null);
+                    var tempBackground = tempDocument.GetBackground();
+                    tempBackground.SetBackgroundType(BackgroundInfo.BackgroundType);
+                    tempBackground.SetColor(BackgroundInfo.Color);
+                    tempBackground.SetScale(1);
+                    tempBackground.SetRotation(BackgroundInfo.Rotation);
+                    tempBackground.SetOpacity(BackgroundInfo.Opacity);
+                    tempBackground.SetVertalign(BackgroundInfo.Vertalign);
+                    tempBackground.SetHorizalign(BackgroundInfo.Horizalign);
+                    tempBackground.SetXOffset(BackgroundInfo.HorizOffset);
+                    tempBackground.SetYOffset(BackgroundInfo.VertOffset);
+                    tempBackground.SetPages(BackgroundInfo.PageRange);
+                    tempBackground.SetAllowsPrint(true);
+                    tempBackground.SetAllowsView(true);
+                    tempBackground.Update();
+
+                    //获取透明背景的图片
+                    var bitmap = ToolMethod.RenderPageBitmapNoWait(tempDocument, (int)pageSize.Width, (int)pageSize.Height, 0, false, false, 0x00FFFFFF);
+                    using (FileStream stream = new FileStream(savePath, FileMode.Create))
+                    {
+                        bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
+                    }
+
+                    backgroundItem.previewImagePath = savePath;
+                    tempDocument.Release();
+
+                    Settings.Default.BackgroundTemplateList.Add(backgroundItem);
+                    Settings.Default.Save();
+                }
+            }
+            catch
+            {
+
+            }
             this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
         }
 
         public void ConvertItemToInfo(BackgroundItem backgroundItem, ref BackgroundInfo backgroundInfo)
         {
-            if(backgroundItem != null)
+            if (backgroundItem != null)
             {
                 backgroundInfo.BackgroundType = backgroundItem.type;
                 backgroundInfo.Color = backgroundItem.bgColor;
@@ -304,8 +364,9 @@ namespace PDF_Office.ViewModels.EditTools.Background
                 backgroundInfo.Opacity = backgroundItem.opacity;
                 backgroundInfo.Rotation = backgroundItem.rotation;
                 backgroundInfo.Scale = backgroundItem.scale;
+                backgroundInfo.PageRangeIndex = backgroundItem.PageRangeIndex;
+                backgroundInfo.PageRange = backgroundItem.pageRange;
             }
-            //  backgroundItem.pagRangeMode = backgroundInfo.PageRange;
         }
 
         /// <summary>
@@ -314,18 +375,80 @@ namespace PDF_Office.ViewModels.EditTools.Background
         public void InitComponentBySelectedInfo()
         {
             ConvertItemToInfo(TemplateBackgroundItem, ref BackgroundInfo);
-            //TODO
+            Color = EditToolsHelper.ConvertColor(BackgroundInfo.Color);
+            RotationValue = (int)BackgroundInfo.Rotation;
+            InitLocationButtonMatrix();
+            HorizontalOffsetValue = (BackgroundInfo.HorizOffset).ToString();
+            VerticalOffsetValue = (BackgroundInfo.VertOffset).ToString();
         }
 
         public void ConfirmEditBackgroundTemplateItem(EnumColorOrFile enumColorOrFile)
         {
-            if(enumColorOrFile == EnumColorOrFile.StatusColor)
+            if (enumColorOrFile == EnumColorOrFile.StatusColor)
             {
                 var backgroundItem = new BackgroundItem();
                 ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
-                Settings.Default.BackgroundTemplateList[TemplateBackgroundItem.listIndex] = backgroundItem;
-                Settings.Default.Save();
                 this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
+
+                try
+                {
+                    //创建缓存文件夹
+                    string folderPath = Path.Combine(App.CurrentPath, "Background");
+                    //有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
+                    //保险措施(猜测)
+                    if (File.Exists(folderPath))
+                    {
+                        File.Delete(folderPath);
+                    }
+
+                    DirectoryInfo tempfolder = new DirectoryInfo(folderPath);
+                    if (!tempfolder.Exists)
+                    {
+                        tempfolder.Create();
+                    }
+
+                    //预览图缓存
+                    string saveName = Guid.NewGuid().ToString();
+                    string savePath = Path.Combine(folderPath, saveName);
+                    System.Windows.Size pageSize = PDFViewer.Document.GetPageSize(0);
+                    CPDFDocument tempDocument = CPDFDocument.CreateDocument();
+                    if (tempDocument != null)
+                    {
+                        tempDocument.InsertPage(0, pageSize.Width, pageSize.Height, null);
+                        var tempBackground = tempDocument.GetBackground();
+                        tempBackground.SetBackgroundType(BackgroundInfo.BackgroundType);
+                        tempBackground.SetColor(BackgroundInfo.Color);
+                        tempBackground.SetScale(1);
+                        tempBackground.SetRotation(BackgroundInfo.Rotation);
+                        tempBackground.SetOpacity(BackgroundInfo.Opacity);
+                        tempBackground.SetVertalign(BackgroundInfo.Vertalign);
+                        tempBackground.SetHorizalign(BackgroundInfo.Horizalign);
+                        tempBackground.SetXOffset(BackgroundInfo.HorizOffset);
+                        tempBackground.SetYOffset(BackgroundInfo.VertOffset);
+                        tempBackground.SetPages(BackgroundInfo.PageRange);
+                        tempBackground.SetAllowsPrint(true);
+                        tempBackground.SetAllowsView(true);
+                        tempBackground.Update();
+
+                        //获取透明背景的图片
+                        var bitmap = ToolMethod.RenderPageBitmapNoWait(tempDocument, (int)pageSize.Width, (int)pageSize.Height, 0, false, false, 0x00FFFFFF);
+                        using (FileStream stream = new FileStream(savePath, FileMode.Create))
+                        {
+                            bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
+                        }
+
+                        backgroundItem.previewImagePath = savePath;
+                        tempDocument.Release();
+
+                        Settings.Default.BackgroundTemplateList[TemplateBackgroundItem.listIndex] = backgroundItem;
+                        Settings.Default.Save();
+                    }
+                }
+                catch
+                {
+
+                }
+
             }
         }
 
@@ -349,11 +472,10 @@ namespace PDF_Office.ViewModels.EditTools.Background
         public void OnNavigatedTo(NavigationContext navigationContext)
         {
             navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
-            if(navigationContext.Parameters.TryGetValue<BackgroundItem>("BackgroundItem", out TemplateBackgroundItem))
+            if (navigationContext.Parameters.TryGetValue<BackgroundItem>("BackgroundItem", out TemplateBackgroundItem))
             {
                 InitComponentBySelectedInfo();
             }
-            InitOpacityList();
         }
     }
 }

+ 131 - 5
PDF Office/ViewModels/EditTools/Background/BackgroundCreateFileContentViewModel.cs

@@ -14,11 +14,13 @@ using Prism.Mvvm;
 using Prism.Regions;
 using System;
 using System.Collections.Generic;
+using System.Drawing.Printing;
 using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.TrayNotify;
 
 namespace PDF_Office.ViewModels.EditTools.Background
 {
@@ -167,7 +169,17 @@ namespace PDF_Office.ViewModels.EditTools.Background
 
         }
 
-        public string PageRangeText { get; set; } = "0";
+        public string _pageRangeText { get; set; } = "0";
+        public string PageRangeText
+        {
+            get { return _pageRangeText; }
+            set
+            {
+                _pageRangeText = value;
+                EditToolsHelper.GetPageRange(PageRangeSelectIndex, PDFViewer.Document, ref BackgroundInfo.PageRange, PageRangeText);
+                eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
+            }
+        }
 
         private int _pageRangeSelectIndex = 0;
         public int PageRangeSelectIndex
@@ -307,8 +319,64 @@ namespace PDF_Office.ViewModels.EditTools.Background
             var backgroundItem = new BackgroundItem();
             ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
             backgroundItem.templateName += Settings.Default.WatermarkIndex.ToString();
-            Settings.Default.BackgroundTemplateList.Add(backgroundItem);
-            Settings.Default.Save();
+            try
+            {
+                //创建缓存文件夹
+                string folderPath = Path.Combine(App.CurrentPath, "Background");
+                //有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
+                //保险措施(猜测)
+                if (File.Exists(folderPath))
+                {
+                    File.Delete(folderPath);
+                }
+
+                DirectoryInfo tempfolder = new DirectoryInfo(folderPath);
+                if (!tempfolder.Exists)
+                {
+                    tempfolder.Create();
+                }
+
+                //预览图缓存
+                string saveName = Guid.NewGuid().ToString();
+                string savePath = Path.Combine(folderPath, saveName);
+                System.Windows.Size pageSize = PDFViewer.Document.GetPageSize(0);
+                CPDFDocument tempDocument = CPDFDocument.CreateDocument();
+                if (tempDocument != null)
+                {
+                    tempDocument.InsertPage(0, pageSize.Width, pageSize.Height, null);
+                    var tempBackground = tempDocument.GetBackground();
+                    tempBackground.SetBackgroundType(BackgroundInfo.BackgroundType);
+                    tempBackground.SetImage(BackgroundInfo.ImageArray, BackgroundInfo.ImageWidth, BackgroundInfo.ImageHeight, ComPDFKit.Import.C_Scale_Type.fitCenter);
+                    tempBackground.SetScale(1);
+                    tempBackground.SetRotation(BackgroundInfo.Rotation);
+                    tempBackground.SetOpacity(BackgroundInfo.Opacity);
+                    tempBackground.SetVertalign(BackgroundInfo.Vertalign);
+                    tempBackground.SetHorizalign(BackgroundInfo.Horizalign);
+                    tempBackground.SetXOffset(BackgroundInfo.HorizOffset);
+                    tempBackground.SetYOffset(BackgroundInfo.VertOffset);
+                    tempBackground.SetPages(BackgroundInfo.PageRange);
+                    tempBackground.SetAllowsPrint(true);
+                    tempBackground.SetAllowsView(true);
+                    tempBackground.Update();
+
+                    //获取透明背景的图片
+                    var bitmap = ToolMethod.RenderPageBitmapNoWait(tempDocument, (int)pageSize.Width, (int)pageSize.Height, 0, false, false, 0x00FFFFFF);
+                    using (FileStream stream = new FileStream(savePath, FileMode.Create))
+                    {
+                        bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
+                    }
+
+                    backgroundItem.previewImagePath = savePath;
+                    tempDocument.Release();
+
+                    Settings.Default.BackgroundTemplateList.Add(backgroundItem);
+                    Settings.Default.Save();
+                }
+            }
+            catch
+            {
+
+            }
             this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
         }
 
@@ -318,9 +386,67 @@ namespace PDF_Office.ViewModels.EditTools.Background
             {
                 var backgroundItem = new BackgroundItem();
                 ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
-                Settings.Default.BackgroundTemplateList[TemplateBackgroundItem.listIndex] = backgroundItem;
-                Settings.Default.Save();
+
                 this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
+
+                try
+                {
+                    //创建缓存文件夹
+                    string folderPath = Path.Combine(App.CurrentPath, "Background");
+                    //有可能因为其他原因存在同名文件,导致创建文件夹失败,需要先删除同名文件
+                    //保险措施(猜测)
+                    if (File.Exists(folderPath))
+                    {
+                        File.Delete(folderPath);
+                    }
+
+                    DirectoryInfo tempfolder = new DirectoryInfo(folderPath);
+                    if (!tempfolder.Exists)
+                    {
+                        tempfolder.Create();
+                    }
+
+                    //预览图缓存
+                    string saveName = Guid.NewGuid().ToString();
+                    string savePath = Path.Combine(folderPath, saveName);
+                    System.Windows.Size pageSize = PDFViewer.Document.GetPageSize(0);
+                    CPDFDocument tempDocument = CPDFDocument.CreateDocument();
+                    if (tempDocument != null)
+                    {
+                        tempDocument.InsertPage(0, pageSize.Width, pageSize.Height, null);
+                        var tempBackground = tempDocument.GetBackground();
+                        tempBackground.SetBackgroundType(BackgroundInfo.BackgroundType);
+                        tempBackground.SetImage(BackgroundInfo.ImageArray, BackgroundInfo.ImageWidth, BackgroundInfo.ImageHeight, ComPDFKit.Import.C_Scale_Type.fitCenter);
+                        tempBackground.SetScale(1);
+                        tempBackground.SetRotation(BackgroundInfo.Rotation);
+                        tempBackground.SetOpacity(BackgroundInfo.Opacity);
+                        tempBackground.SetVertalign(BackgroundInfo.Vertalign);
+                        tempBackground.SetHorizalign(BackgroundInfo.Horizalign);
+                        tempBackground.SetXOffset(BackgroundInfo.HorizOffset);
+                        tempBackground.SetYOffset(BackgroundInfo.VertOffset);
+                        tempBackground.SetPages(BackgroundInfo.PageRange);
+                        tempBackground.SetAllowsPrint(true);
+                        tempBackground.SetAllowsView(true);
+                        tempBackground.Update();
+
+                        //获取透明背景的图片
+                        var bitmap = ToolMethod.RenderPageBitmapNoWait(tempDocument, (int)pageSize.Width, (int)pageSize.Height, 0, false, false, 0x00FFFFFF);
+                        using (FileStream stream = new FileStream(savePath, FileMode.Create))
+                        {
+                            bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
+                        }
+
+                        backgroundItem.previewImagePath = savePath;
+                        tempDocument.Release();
+
+                        Settings.Default.BackgroundTemplateList[TemplateBackgroundItem.listIndex] = backgroundItem;
+                        Settings.Default.Save();
+                    }
+                }
+                catch
+                {
+
+                }
             }
         }
 

+ 6 - 3
PDF Office/ViewModels/EditTools/Background/BackgroundDocumentContentViewModel.cs

@@ -31,7 +31,6 @@ namespace PDF_Office.ViewModels.EditTools.Background
         public IRegionManager regionManager;
         public CPDFViewer PDFViewer;
         public CPDFDocument Document;
-        private CPDFWatermark watermark;
         private ViewContentViewModel viewContentViewModel;
         CPDFViewer pdfViewer;
 
@@ -77,7 +76,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
                 if (backgroundInfo.BackgroundType == C_Background_Type.BG_TYPE_COLOR)
                 {
                     background.SetBackgroundType(C_Background_Type.BG_TYPE_COLOR);
-                     background.SetColor(backgroundInfo.Color);
+                    background.SetColor(backgroundInfo.Color);
                 }
                 else
                 {
@@ -94,7 +93,11 @@ namespace PDF_Office.ViewModels.EditTools.Background
                 background.SetYOffset(backgroundInfo.VertOffset);
                 background.SetAllowsPrint(true);
                 background.SetAllowsView(true);
-                background.SetPages(backgroundInfo.PageRange);
+                if (IsNewDoc) { background.SetPages("0"); }
+                else
+                {
+                    background.SetPages(backgroundInfo.PageRange);
+                }
                 background.Update();
             }
         }

+ 11 - 7
PDF Office/ViewModels/EditTools/Background/BackgroundTemplateListColorContentViewModel.cs

@@ -1,4 +1,5 @@
-using PDF_Office.EventAggregators;
+using Microsoft.Office.Interop.Word;
+using PDF_Office.EventAggregators;
 using PDF_Office.Model.EditTools.Background;
 using PDF_Office.Properties;
 using PDFSettings;
@@ -9,6 +10,7 @@ using Prism.Regions;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+using System.IO;
 using System.Linq;
 using System.Security.Permissions;
 using System.Text;
@@ -143,12 +145,12 @@ namespace PDF_Office.ViewModels.EditTools.Background
             {
                 return;
             }
-            Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previeImagePath);
-            Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.imagepath);
-
+            if (!string.IsNullOrEmpty(BackgroundItem.previewImagePath) && File.Exists(BackgroundItem.previewImagePath))
+            {
+                Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previewImagePath);
+            }
             Settings.Default.BackgroundTemplateList.Remove(BackgroundItem);
             Settings.Default.Save();
-
             BackgroundModColorCollection.Remove(BackgroundItem);
             GetBackgroundSource();
         }
@@ -159,8 +161,10 @@ namespace PDF_Office.ViewModels.EditTools.Background
             {
                 int temp = 0;
                 var template = Settings.Default.BackgroundTemplateList[temp];
-                Settings.Default.AppProperties.NeedToDeletePath.Add(template.previeImagePath);
-                Settings.Default.AppProperties.NeedToDeletePath.Add(template.imagepath);
+                if (!string.IsNullOrEmpty(BackgroundItem.previewImagePath)&& File.Exists(BackgroundItem.previewImagePath))
+                {
+                    Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previewImagePath);
+                }
 
                 Settings.Default.BackgroundTemplateList.Remove(template);
                 Settings.Default.Save();

+ 24 - 19
PDF Office/ViewModels/EditTools/Background/BackgroundTemplateListFileContentViewModel.cs

@@ -10,6 +10,7 @@ using Prism.Regions;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -18,7 +19,7 @@ using System.Windows.Controls;
 
 namespace PDF_Office.ViewModels.EditTools.Background
 {
-    public class BackgroundTemplateListFileContentViewModel : BindableBase,INavigationAware
+    public class BackgroundTemplateListFileContentViewModel : BindableBase, INavigationAware
     {
         private readonly IEventAggregator eventAggregator;
         public BackgroundInfo BackgroundInfo = new BackgroundInfo();
@@ -45,8 +46,8 @@ namespace PDF_Office.ViewModels.EditTools.Background
 
         public DelegateCommand AddTemplateCommand { get; set; }
         public DelegateCommand<object> DeleteTemplateItemCommand { get; set; }
-        public DelegateCommand <object> EditTemplateItemCommand { get; set; }
-        public DelegateCommand DeleteAllTemplateItemCommand{ get; set; }
+        public DelegateCommand<object> EditTemplateItemCommand { get; set; }
+        public DelegateCommand DeleteAllTemplateItemCommand { get; set; }
         public DelegateCommand<object> SelectTemplateItemCommand { get; set; }
 
         BackgroundTemplateListFileContentViewModel(IEventAggregator eventAggregator)
@@ -134,7 +135,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
 
         public void DeleteTemplateItem(object e)
         {
-            var control = e as  Control;
+            var control = e as Control;
             if (control == null)
             {
                 return;
@@ -144,8 +145,10 @@ namespace PDF_Office.ViewModels.EditTools.Background
             {
                 return;
             }
-            Settings.Default.AppProperties.NeedToDeletePath.Add(template.previeImagePath);
-            Settings.Default.AppProperties.NeedToDeletePath.Add(template.imagepath);
+            if (!string.IsNullOrEmpty(BackgroundItem.previewImagePath) && File.Exists(BackgroundItem.previewImagePath))
+            {
+                Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previewImagePath);
+            }
 
             Settings.Default.BackgroundTemplateList.Remove(template);
             Settings.Default.Save();
@@ -156,25 +159,27 @@ namespace PDF_Office.ViewModels.EditTools.Background
         }
 
         public void DeleteAllTemplateItem()
-        { 
-                while (Settings.Default.BackgroundTemplateList.Count != 0)
+        {
+            while (Settings.Default.BackgroundTemplateList.Count != 0)
+            {
+                int temp = 0;
+                var template = Settings.Default.BackgroundTemplateList[temp];
+                if (!string.IsNullOrEmpty(BackgroundItem.previewImagePath))
                 {
-                    int temp = 0;
-                    var template = Settings.Default.BackgroundTemplateList[temp];
-                    Settings.Default.AppProperties.NeedToDeletePath.Add(template.previeImagePath);
-                    Settings.Default.AppProperties.NeedToDeletePath.Add(template.imagepath);
+                    Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previewImagePath);
+                }
 
-                    Settings.Default.BackgroundTemplateList.Remove(template);
-                    Settings.Default.Save();
+                Settings.Default.BackgroundTemplateList.Remove(template);
+                Settings.Default.Save();
 
-                    BackgroundModFileCollection.Remove(template);
-                }
+                BackgroundModFileCollection.Remove(template);
+            }
             GetBackgroundSource();
         }
 
         public void ConvertItemToInfo(BackgroundItem backgroundItem, ref BackgroundInfo backgroundInfo)
         {
-            if(backgroundItem!=null)
+            if (backgroundItem != null)
             {
                 backgroundInfo.BackgroundType = backgroundItem.type;
                 backgroundInfo.ImageArray = backgroundItem.imageArray;
@@ -199,8 +204,8 @@ namespace PDF_Office.ViewModels.EditTools.Background
 
         public void SelectTemplateItem(object e)
         {
-            var listBox = e as  ListBox;
-            BackgroundItem BackgroundItem =   listBox.SelectedItem as BackgroundItem;
+            var listBox = e as ListBox;
+            BackgroundItem BackgroundItem = listBox.SelectedItem as BackgroundItem;
             SendTemplateItemToDocument(BackgroundItem);
         }
 

+ 10 - 7
PDF Office/ViewModels/EditTools/Watermark/WatermarkCreateFileContentViewModel.cs

@@ -297,9 +297,9 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
             {
                 watermarkItem.type = watermarkInfo.WatermarkType;
                 //watermarkItem.imageArray = watermarkInfo.ImageArray;
-                watermarkItem.imagepath=watermarkInfo.ImagePath;
+                watermarkItem.imagepath = watermarkInfo.ImagePath;
                 watermarkItem.imageSize = watermarkInfo.ImageSize;
-                watermarkItem.imageWidth  = watermarkInfo.ImageWidth;
+                watermarkItem.imageWidth = watermarkInfo.ImageWidth;
                 watermarkItem.imageHeight = watermarkInfo.ImageHeight;
                 watermarkItem.horizalign = watermarkInfo.WatermarkHorizalign;
                 watermarkItem.vertalign = watermarkInfo.WatermarkVertalign;
@@ -400,11 +400,14 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
         {
             if (enumTextOrFile == EnumTextOrFile.StatusFile)
             {
-                var watermarkItem = new WatermarkItem();
-                ConvertInfoToItem(ref watermarkItem, WatermarkInfo);
-                
-                this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
-                this.eventAggregator.GetEvent<SaveEditedWatermarkTemplateItemEvent>().Publish(watermarkItem);
+                if (enumTextOrFile == EnumTextOrFile.StatusFile && FileNameText != "")
+                {
+                    var watermarkItem = new WatermarkItem();
+                    ConvertInfoToItem(ref watermarkItem, WatermarkInfo);
+
+                    this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
+                    this.eventAggregator.GetEvent<SaveEditedWatermarkTemplateItemEvent>().Publish(watermarkItem);
+                }
             }
         }
 

+ 5 - 8
PDF Office/Views/EditTools/Background/BackgroundTemplateListColorContent.xaml

@@ -51,15 +51,12 @@
             </ListBox.ItemContainerStyle>
             <ListBox.ItemTemplate>
                 <DataTemplate DataType="{x:Type data:BackgroundItem}">
-                    <StackPanel Name="itemPanel" >
+                    <StackPanel Name="itemPanel" Loaded="itemPanel_Loaded">
                         <Border BorderThickness="1" BorderBrush="#A0A2AE">
-                            <Grid Height="160" Width=" 128">
-                                <Label >
-                                    <Image Source="pack://application:,,,/Resources/EditTools/watermark_bg.png" Stretch="Fill" Margin="0"></Image>
-                                </Label>
-                                <Label >
-                                    
-                                </Label>
+                            <Grid Height="160" Width=" 128" Margin="1">
+
+                                <Image  Name="BackgroundPreview" Stretch="Fill" RenderOptions.BitmapScalingMode="HighQuality"/>
+
                                 <Button Name="EditTemplateBtn" Height="43" Width="64" Margin="0" HorizontalAlignment="Left" VerticalAlignment="Bottom" Click="EditTemplateBtn_Click"></Button>
                                 <Button Name="DeleteTemplateBtn"  Height="43" Width="64" Margin="0" HorizontalAlignment="Right" VerticalAlignment="Bottom" Click="DeleteTemplateBtn_Click" >
                                 </Button>

+ 22 - 0
PDF Office/Views/EditTools/Background/BackgroundTemplateListColorContent.xaml.cs

@@ -1,8 +1,13 @@
 using ComPDFKitViewer;
 using PDF_Office.ViewModels.EditTools.Background;
 using PDF_Office.ViewModels.PageEdit;
+using System.Diagnostics;
+using System;
+using System.IO;
 using System.Windows;
 using System.Windows.Controls;
+using System.Windows.Media.Imaging;
+using PDFSettings;
 
 namespace PDF_Office.Views.EditTools.Background
 {
@@ -51,5 +56,22 @@ namespace PDF_Office.Views.EditTools.Background
         {
             viewModel.EditTemplateItemCommand?.Execute(sender);
         }
+
+        private void itemPanel_Loaded(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                StackPanel panel = sender as StackPanel;
+                var data = panel.DataContext as BackgroundItem;
+                var img = panel.FindName("BackgroundPreview") as Image;
+                Trace.WriteLine(data.previewImagePath);
+                if (!string.IsNullOrEmpty(data.previewImagePath) && File.Exists(data.previewImagePath))
+                {
+                    BitmapSource bmp = new BitmapImage(new Uri(data.previewImagePath));
+                    img.Source = bmp;
+                }
+            }
+            catch { }
+        }
     }
 }

+ 2 - 7
PDF Office/Views/EditTools/Background/BackgroundTemplateListFileContent.xaml

@@ -53,15 +53,10 @@
             </ListBox.ItemContainerStyle>
             <ListBox.ItemTemplate>
                 <DataTemplate DataType="{x:Type data:BackgroundItem}">
-                    <StackPanel Name="itemPanel">
+                    <StackPanel Name="itemPanel" Loaded="itemPanel_Loaded">
                         <Border BorderThickness="1" BorderBrush="#A0A2AE">
                             <Grid Height="160" Width=" 128" >
-                                <Label>
-                                    <Image Source="pack://application:,,,/Resources/EditTools/watermark_bg.png" Stretch="Fill" Margin="0"></Image>
-                                </Label>
-                                <Label >
-                                    
-                                </Label>
+                                <Image  Name="BackgroundPreview" Stretch="Fill" RenderOptions.BitmapScalingMode="HighQuality"/>
                                 <Button Name="EditTemplateBtn" Height="43" Width="63" HorizontalAlignment="Left" VerticalAlignment="Bottom" Click="EditTemplateBtn_Click"></Button>
                                 <Button Name="DeleteTemplateBtn"  Height="43" Width="63" HorizontalAlignment="Right" VerticalAlignment="Bottom" Click="DeleteTemplateBtn_Click">
                                 </Button>

+ 22 - 0
PDF Office/Views/EditTools/Background/BackgroundTemplateListFileContent.xaml.cs

@@ -1,6 +1,11 @@
 using PDF_Office.ViewModels.EditTools.Background;
+using PDFSettings;
+using System.Diagnostics;
+using System;
 using System.Windows;
 using System.Windows.Controls;
+using System.Windows.Media.Imaging;
+using System.IO;
 
 namespace PDF_Office.Views.EditTools.Background
 {
@@ -49,5 +54,22 @@ namespace PDF_Office.Views.EditTools.Background
         {
             viewModel.EditTemplateItemCommand?.Execute(sender);
         }
+
+        private void itemPanel_Loaded(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                StackPanel panel = sender as StackPanel;
+                var data = panel.DataContext as BackgroundItem;
+                var img = panel.FindName("BackgroundPreview") as Image;
+                Trace.WriteLine(data.previewImagePath);
+                if (!string.IsNullOrEmpty(data.previewImagePath) && File.Exists(data.previewImagePath))
+                {
+                    BitmapSource bmp = new BitmapImage(new Uri(data.previewImagePath));
+                    img.Source = bmp;
+                }
+            }
+            catch { }
+        }
     }
 }

+ 11 - 4
PDFSettings/BackgroundTemplateList.cs

@@ -52,7 +52,10 @@ namespace PDFSettings
         /// </summary>
         public byte[] imageArray = null;
 
-        public string previeImagePath = "";
+        /// <summary>
+        /// 预览缓存路径
+        /// </summary>
+        public string previewImagePath = "";
 
         /// <summary>
         /// 图片数据缓存路径
@@ -109,11 +112,15 @@ namespace PDFSettings
         /// </summary>
         public bool isCanPrint = true;
         public bool isCanView = true;
-        
+
 
         /// <summary>
-        /// 页面选择的范围 ALL ODD EVEN 1-5(传入用户输入的字符串)
+        /// 页面范围索引;
+        /// 0:全部页面
+        /// 1:奇数页
+        /// 2;偶数页
+        /// 3:自定义页
         /// </summary>
-        public string pagRangeMode = "ALL";
+        public int PageRangeIndex = 0;
     }
 }