|
@@ -15,6 +15,7 @@ using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Collections.ObjectModel;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel;
|
|
|
|
+using System.IO;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
@@ -119,7 +120,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
BackgroundInfo.HorizOffset = float.Parse(HorizontalOffsetValue);
|
|
BackgroundInfo.HorizOffset = float.Parse(HorizontalOffsetValue);
|
|
eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
|
|
eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
private ObservableDictionary<string, bool> _getLocationFromNumber = new ObservableDictionary<string, bool>();
|
|
private ObservableDictionary<string, bool> _getLocationFromNumber = new ObservableDictionary<string, bool>();
|
|
public ObservableDictionary<string, bool> GetLocationFromNumber
|
|
public ObservableDictionary<string, bool> GetLocationFromNumber
|
|
@@ -166,6 +167,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
set
|
|
set
|
|
{
|
|
{
|
|
SetProperty(ref _pageRangeSelectIndex, value);
|
|
SetProperty(ref _pageRangeSelectIndex, value);
|
|
|
|
+ BackgroundInfo.PageRangeIndex = PageRangeSelectIndex;
|
|
EditToolsHelper.GetPageRange(PageRangeSelectIndex, PDFViewer.Document, ref BackgroundInfo.PageRange, PageRangeText);
|
|
EditToolsHelper.GetPageRange(PageRangeSelectIndex, PDFViewer.Document, ref BackgroundInfo.PageRange, PageRangeText);
|
|
eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
|
|
eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
|
|
}
|
|
}
|
|
@@ -251,6 +253,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
public void ChangeColor(object e)
|
|
public void ChangeColor(object e)
|
|
{
|
|
{
|
|
if (e != null)
|
|
if (e != null)
|
|
@@ -276,6 +279,7 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
backgroundItem.opacity = backgroundInfo.Opacity;
|
|
backgroundItem.opacity = backgroundInfo.Opacity;
|
|
backgroundItem.rotation = backgroundInfo.Rotation;
|
|
backgroundItem.rotation = backgroundInfo.Rotation;
|
|
backgroundItem.scale = backgroundInfo.Scale;
|
|
backgroundItem.scale = backgroundInfo.Scale;
|
|
|
|
+ backgroundItem.PageRangeIndex = backgroundInfo.PageRangeIndex;
|
|
backgroundItem.pageRange = backgroundInfo.PageRange;
|
|
backgroundItem.pageRange = backgroundInfo.PageRange;
|
|
}
|
|
}
|
|
// backgroundItem.pagRangeMode = backgroundInfo.PageRange;
|
|
// backgroundItem.pagRangeMode = backgroundInfo.PageRange;
|
|
@@ -286,14 +290,70 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
var backgroundItem = new BackgroundItem();
|
|
var backgroundItem = new BackgroundItem();
|
|
ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
|
|
ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
|
|
backgroundItem.templateName += Settings.Default.WatermarkIndex.ToString();
|
|
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);
|
|
this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
|
|
}
|
|
}
|
|
|
|
|
|
public void ConvertItemToInfo(BackgroundItem backgroundItem, ref BackgroundInfo backgroundInfo)
|
|
public void ConvertItemToInfo(BackgroundItem backgroundItem, ref BackgroundInfo backgroundInfo)
|
|
{
|
|
{
|
|
- if(backgroundItem != null)
|
|
|
|
|
|
+ if (backgroundItem != null)
|
|
{
|
|
{
|
|
backgroundInfo.BackgroundType = backgroundItem.type;
|
|
backgroundInfo.BackgroundType = backgroundItem.type;
|
|
backgroundInfo.Color = backgroundItem.bgColor;
|
|
backgroundInfo.Color = backgroundItem.bgColor;
|
|
@@ -304,8 +364,9 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
backgroundInfo.Opacity = backgroundItem.opacity;
|
|
backgroundInfo.Opacity = backgroundItem.opacity;
|
|
backgroundInfo.Rotation = backgroundItem.rotation;
|
|
backgroundInfo.Rotation = backgroundItem.rotation;
|
|
backgroundInfo.Scale = backgroundItem.scale;
|
|
backgroundInfo.Scale = backgroundItem.scale;
|
|
|
|
+ backgroundInfo.PageRangeIndex = backgroundItem.PageRangeIndex;
|
|
|
|
+ backgroundInfo.PageRange = backgroundItem.pageRange;
|
|
}
|
|
}
|
|
- // backgroundItem.pagRangeMode = backgroundInfo.PageRange;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -314,18 +375,80 @@ namespace PDF_Office.ViewModels.EditTools.Background
|
|
public void InitComponentBySelectedInfo()
|
|
public void InitComponentBySelectedInfo()
|
|
{
|
|
{
|
|
ConvertItemToInfo(TemplateBackgroundItem, ref BackgroundInfo);
|
|
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)
|
|
public void ConfirmEditBackgroundTemplateItem(EnumColorOrFile enumColorOrFile)
|
|
{
|
|
{
|
|
- if(enumColorOrFile == EnumColorOrFile.StatusColor)
|
|
|
|
|
|
+ if (enumColorOrFile == EnumColorOrFile.StatusColor)
|
|
{
|
|
{
|
|
var backgroundItem = new BackgroundItem();
|
|
var backgroundItem = new BackgroundItem();
|
|
ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
|
|
ConvertInfoToItem(ref backgroundItem, BackgroundInfo);
|
|
- Settings.Default.BackgroundTemplateList[TemplateBackgroundItem.listIndex] = backgroundItem;
|
|
|
|
- Settings.Default.Save();
|
|
|
|
this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusTemplate);
|
|
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)
|
|
public void OnNavigatedTo(NavigationContext navigationContext)
|
|
{
|
|
{
|
|
navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
|
|
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();
|
|
InitComponentBySelectedInfo();
|
|
}
|
|
}
|
|
- InitOpacityList();
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|