|
@@ -3,17 +3,17 @@ using ComPDFKit.PDFDocument;
|
|
|
using ComPDFKitViewer;
|
|
|
using ComPDFKitViewer.AnnotEvent;
|
|
|
using ComPDFKitViewer.PdfViewer;
|
|
|
-using Microsoft.Office.Interop.Excel;
|
|
|
-using Microsoft.Office.Interop.Word;
|
|
|
using Microsoft.Win32;
|
|
|
using PDF_Office.CustomControl;
|
|
|
using PDF_Office.EventAggregators;
|
|
|
using PDF_Office.Helper;
|
|
|
using PDF_Office.Model;
|
|
|
+using PDF_Office.Model.BOTA;
|
|
|
using PDF_Office.Properties;
|
|
|
using PDF_Office.ViewModels.BOTA;
|
|
|
using PDF_Office.ViewModels.PropertyPanel;
|
|
|
using PDF_Office.ViewModels.PropertyPanel.AnnotPanel;
|
|
|
+using PDF_Office.ViewModels.Tools.AnnotManager;
|
|
|
using PDF_Office.Views.BOTA;
|
|
|
using PDF_Office.Views.PropertyPanel.AnnotPanel;
|
|
|
using PDFSettings;
|
|
@@ -25,16 +25,19 @@ using Prism.Regions;
|
|
|
using Prism.Services.Dialogs;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Reflection;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
+using System.Windows.Annotations;
|
|
|
using System.Windows.Controls;
|
|
|
using System.Windows.Controls.Primitives;
|
|
|
using System.Windows.Forms;
|
|
|
using System.Windows.Input;
|
|
|
using System.Windows.Media;
|
|
|
+using System.Windows.Media.Imaging;
|
|
|
using ContextMenu = System.Windows.Controls.ContextMenu;
|
|
|
using KeyEventArgs = System.Windows.Input.KeyEventArgs;
|
|
|
using MenuItem = System.Windows.Controls.MenuItem;
|
|
@@ -44,6 +47,7 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
public sealed partial class AnnotToolContentViewModel : BindableBase, INavigationAware
|
|
|
{
|
|
|
#region 初始化
|
|
|
+
|
|
|
public AnnotToolContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, IDialogService dialogService)
|
|
|
{
|
|
|
region = regionManager;
|
|
@@ -164,7 +168,6 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
AnnotHandlerEventArgs annotArgs = null;
|
|
|
var tag = annotBtn.Tag.ToString();
|
|
|
|
|
|
-
|
|
|
if (annotBtn.Name == "BtnShowAnnot")
|
|
|
{
|
|
|
//显示/隐藏注释
|
|
@@ -184,13 +187,13 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
annotArgs.Author = Settings.Default.AppProperties.Description.Author;
|
|
|
PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
PDFViewer.SetToolParam(annotArgs);
|
|
|
+
|
|
|
#region 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
|
|
|
|
|
|
//isRightMenuAddAnnot = false;
|
|
|
|
|
|
#endregion 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -200,7 +203,6 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
PDFViewer.ToolManager.EnableClickCreate = false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if (dictVar["isTemplateAnnot"] == false && annotArgs == null)
|
|
|
{
|
|
|
//当不是注释模板,且无创建注释时,属性面板显示为空内容
|
|
@@ -245,7 +247,6 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
else
|
|
|
StrAnnotToolChecked = "Link";
|
|
|
|
|
|
-
|
|
|
if (tag == "Rect" || tag == "Circle" || tag == "Arrow" || tag == "Line")
|
|
|
{
|
|
|
//新建形状注释,设置默认大小
|
|
@@ -257,10 +258,8 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
{
|
|
|
PDFViewer.ToolManager.EnableClickCreate = false;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
#endregion 注释工具栏 -》Command实现
|
|
|
|
|
|
#region BOTA
|
|
@@ -334,6 +333,263 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
|
|
|
#region 阅读页右键菜单
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 空白处-右键菜单-添加注释
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ private void AddAnnotation_Click(object sender)
|
|
|
+ {
|
|
|
+ if (sender is MenuItem menuItem)
|
|
|
+ {
|
|
|
+ AnnotHandlerEventArgs annotHandler = null;
|
|
|
+ string str = menuItem.Tag.ToString();
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
|
|
|
+ propertyPanel.IsAddLink = false;
|
|
|
+ propertyPanel.IsLocationLink = false;
|
|
|
+ if (str == AddAnnotType.AnnotFreehand.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetFreehand();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotFreeText.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetFreetext();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotSticky.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetStickyNote();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotSquare.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetRect();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotCircle.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetCircle();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotArrow.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetArrowLine("Arrow");
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotLine.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetArrowLine("Line");
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotLink.ToString())
|
|
|
+ {
|
|
|
+ propertyPanel.IsAddLink = true;
|
|
|
+
|
|
|
+ annotHandler = GetLink();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotStamp.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetStamp();
|
|
|
+ }
|
|
|
+ if (str == AddAnnotType.AnnotAutograph.ToString())
|
|
|
+ {
|
|
|
+ annotHandler = GetSignature();
|
|
|
+ }
|
|
|
+ if (annotHandler != null)
|
|
|
+ {
|
|
|
+ annotHandler.Author = Settings.Default.AppProperties.Description.Author;
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
+ PDFViewer.SetToolParam(annotHandler);
|
|
|
+ //是否展开右侧面板 =>否(链接、图章、签名除外)
|
|
|
+ ShowPropertyPanel(false);
|
|
|
+ if (str == AddAnnotType.AnnotLink.ToString()
|
|
|
+ || str == AddAnnotType.AnnotStamp.ToString()
|
|
|
+ || str == AddAnnotType.AnnotAutograph.ToString()
|
|
|
+ )
|
|
|
+ {
|
|
|
+ ShowPropertyPanel(true);
|
|
|
+ }
|
|
|
+ IsNoSelectMenu = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 选择文本、图片,右键菜单
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
+ private void AnnotToolMenu_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ if (sender is MenuItem clickMenu && clickMenu.CommandParameter is AnnotCommandArgs)
|
|
|
+ {
|
|
|
+ AnnotCommandArgs annotCommand = clickMenu.CommandParameter as AnnotCommandArgs;
|
|
|
+
|
|
|
+ switch (clickMenu.Tag.ToString())
|
|
|
+ {
|
|
|
+ case "HighLight"://字体高亮
|
|
|
+ TextHighlightAnnotArgs highlightArgs = (TextHighlightAnnotArgs)GetHighLight();
|
|
|
+ highlightArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ highlightArgs.Content = annotCommand.Text;
|
|
|
+ highlightArgs.Author = Settings.Default.AppProperties.Description.Author;
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
+ PDFViewer.SetToolParam(highlightArgs);
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.PanTool);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "UnderLine"://下划线
|
|
|
+ TextUnderlineAnnotArgs underlineArgs = (TextUnderlineAnnotArgs)GetUnderLine();
|
|
|
+ underlineArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ underlineArgs.Content = annotCommand.Text;
|
|
|
+ underlineArgs.Author = Settings.Default.AppProperties.Description.Author;
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
+ PDFViewer.SetToolParam(underlineArgs);
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.PanTool);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "Strikeout"://删除线
|
|
|
+ TextStrikeoutAnnotArgs strikeoutArgs = (TextStrikeoutAnnotArgs)GetStrikeout();
|
|
|
+ strikeoutArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ strikeoutArgs.Content = annotCommand.Text;
|
|
|
+ strikeoutArgs.Author = Settings.Default.AppProperties.Description.Author;
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
+ PDFViewer.SetToolParam(strikeoutArgs);
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.PanTool);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "Freetext"://文本
|
|
|
+ FreeTextAnnotArgs textArgs = (FreeTextAnnotArgs)GetFreetext();
|
|
|
+ textArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ //textArgs.Transparency = 1;
|
|
|
+ //textArgs.BgColor = Colors.Transparent;
|
|
|
+ //textArgs.LineColor = Colors.Red;
|
|
|
+ //textArgs.LineWidth = 2;
|
|
|
+ textArgs.TextContent = annotCommand.Text;
|
|
|
+
|
|
|
+ PDFViewer.CreatePageAnnot(annotCommand.PageIndex, textArgs);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "StickyNote"://便签
|
|
|
+
|
|
|
+ StickyAnnotArgs stickyAnnotArgs = (StickyAnnotArgs)GetStickyNote();
|
|
|
+ //stickyAnnotArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ List<TextSelectNode> textSelectNodes = PDFViewer.GetSelectTextInfo();
|
|
|
+
|
|
|
+ //stickyAnnotArgs.ClientRect = new Rect(textSelectNodes[0].StartPoint.X, annotCommand.TextRect.Y - annotCommand.TextRect.Height, annotCommand.TextRect.Width, annotCommand.TextRect.Height);
|
|
|
+ Rect rect = annotCommand.TextRectList[0];
|
|
|
+
|
|
|
+ #region to do 转dpi
|
|
|
+
|
|
|
+ //int dpi = DpiHelpers.Dpi;
|
|
|
+ //double x = rect.X / 72D * dpi;
|
|
|
+ //double y = (rect.Y - rect.Height) / 72D * dpi;
|
|
|
+ //double width = rect.Width / 72D * dpi;
|
|
|
+ //double height = rect.Height / 72D * dpi;
|
|
|
+
|
|
|
+ #endregion to do 转dpi
|
|
|
+
|
|
|
+ //stickyAnnotArgs.ClientRect = new Rect(x, y, width, height);
|
|
|
+ //stickyAnnotArgs.ClientRect = new Rect(rect.X, rect.Y - rect.Height, rect.Width, rect.Height);
|
|
|
+ stickyAnnotArgs.ClientRect = rect;
|
|
|
+ //PDFViewer.CreatePageAnnot(annotCommand.PageIndex, stickyAnnotArgs);
|
|
|
+ NavigationParameters param = new NavigationParameters();
|
|
|
+ param.Add(ParameterNames.PDFViewer, PDFViewer);
|
|
|
+ param.Add(ParameterNames.StickyAnnotArgs, stickyAnnotArgs);
|
|
|
+ param.Add(ParameterNames.ViewContentViewModel, viewContentViewModel);
|
|
|
+ param.Add(ParameterNames.AnnotCommandArgs, annotCommand);
|
|
|
+
|
|
|
+ System.Windows.Controls.ContentControl window = null;
|
|
|
+ if (PDFViewer.Parent as ContentControl != null)
|
|
|
+ {
|
|
|
+ window = PDFViewer.Parent as ContentControl;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ window = App.Current.MainWindow;
|
|
|
+ }
|
|
|
+
|
|
|
+ var point = Mouse.GetPosition(window);
|
|
|
+ viewContentViewModel.NotePopupVisible = Visibility.Visible;
|
|
|
+ viewContentViewModel.CanvasNoteLeft = point.X;
|
|
|
+ viewContentViewModel.CanvasNoteBottom = point.Y;
|
|
|
+ if (point.Y > window.ActualHeight / 2)
|
|
|
+ {
|
|
|
+ viewContentViewModel.CanvasNoteBottom = point.Y - window.ActualHeight / 2;
|
|
|
+ }
|
|
|
+
|
|
|
+ viewContentViewModel.IsNoteAdd = true;
|
|
|
+ region.RequestNavigate(viewContentViewModel.NotePopupRegionName, "StickyNotePopup", param);
|
|
|
+
|
|
|
+ //stickyAnnotArgs.Author = Settings.Default.AppProperties.Description.Author;
|
|
|
+ //PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
+ //PDFViewer.SetToolParam(stickyAnnotArgs);
|
|
|
+
|
|
|
+ //PDFViewer.SetMouseMode(MouseModes.PanTool);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "Rect"://矩形
|
|
|
+ SquareAnnotArgs squareAnnotArgs = (SquareAnnotArgs)GetRect();
|
|
|
+ squareAnnotArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ PDFViewer.CreatePageAnnot(annotCommand.PageIndex, squareAnnotArgs);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "Circle"://圆
|
|
|
+ CircleAnnotArgs circleAnnotArgs = (CircleAnnotArgs)GetCircle();
|
|
|
+ circleAnnotArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ PDFViewer.CreatePageAnnot(annotCommand.PageIndex, circleAnnotArgs);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "Line"://线
|
|
|
+ LineAnnotArgs lineAnnotArgs = (LineAnnotArgs)GetArrowLine(clickMenu.Tag.ToString());
|
|
|
+ lineAnnotArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ lineAnnotArgs.LinePoints.Add(new Point(annotCommand.TextRect.Left, annotCommand.TextRect.Top));
|
|
|
+ lineAnnotArgs.LinePoints.Add(new Point(annotCommand.TextRect.Right, annotCommand.TextRect.Bottom));
|
|
|
+ PDFViewer.CreatePageAnnot(annotCommand.PageIndex, lineAnnotArgs);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "Link"://链接
|
|
|
+ LinkAnnotArgs linkArgs = new LinkAnnotArgs();
|
|
|
+ linkArgs.ClientRect = annotCommand.TextRect;
|
|
|
+ linkArgs.URI = string.Empty;
|
|
|
+ linkArgs.LinkType = LINK_TYPE.GOTO;
|
|
|
+ linkArgs.DestIndex = annotCommand.PageIndex;
|
|
|
+ PDFViewer.CreatePageAnnot(annotCommand.PageIndex, linkArgs);
|
|
|
+ BtnLinkIsChecked = true;
|
|
|
+ List<AnnotHandlerEventArgs> lists = new List<AnnotHandlerEventArgs>();
|
|
|
+ lists.Add(linkArgs);
|
|
|
+ propertyPanel.IsAddLink = true;
|
|
|
+
|
|
|
+ AnnotHandlerEventArgs annotArgs = GetLink(lists);
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
|
|
|
+ PDFViewer.SetToolParam(annotArgs);
|
|
|
+ viewContentViewModel.IsPropertyOpen = true;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "OutLine":
|
|
|
+ bool isTabItemAnnotation = IsBOTATabItemShow(out BOTAContentViewModel bOTAContentViewModel, out BOTAContent bOTAContent, "TabItemOutLine");
|
|
|
+ if (isTabItemAnnotation == false)
|
|
|
+ {
|
|
|
+ bOTAContent.TabItemOutLine.IsSelected = true;
|
|
|
+ }
|
|
|
+ OutLineControlViewModel outLineControlViewModel = GetOutLineControlViewModel(bOTAContentViewModel, out OutLineControl outLineControl);
|
|
|
+ if (outLineControlViewModel != null && outLineControl != null)
|
|
|
+ {
|
|
|
+ string str = null;
|
|
|
+ if (string.IsNullOrEmpty(annotCommand.Text))
|
|
|
+ {
|
|
|
+ str = (annotCommand.PageIndex + 1).ToString();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ str = annotCommand.Text;
|
|
|
+ }
|
|
|
+
|
|
|
+ outLineControl.AddOutlineNode(str);
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ case "ExportPicture":
|
|
|
+ ExportPicture_MenuItemClick();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //ShowPropertyPanel(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void PageDisplay(ItemCollection items)
|
|
|
{
|
|
|
foreach (var item in items)
|
|
@@ -652,14 +908,625 @@ namespace PDF_Office.ViewModels.Tools
|
|
|
|
|
|
#endregion 阅读页右键菜单
|
|
|
|
|
|
+ #region 注释右键菜单事件
|
|
|
+
|
|
|
+ //高亮、下划线、删除
|
|
|
+ private void HightAnnotCopyText_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ System.Windows.Clipboard.SetText(annot.Content);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //更改为当前注释属性默认值
|
|
|
+ private void AnnotDefaultValues_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ if (annot is TextHighlightAnnotArgs)
|
|
|
+ {
|
|
|
+ var color = (annot as TextHighlightAnnotArgs).Color;
|
|
|
+ HighLightColor = new SolidColorBrush(color);
|
|
|
+
|
|
|
+ Settings.Default.AppProperties.Annotate.HighLightColor = color;
|
|
|
+
|
|
|
+ var hightlight = GetAnnotDefault(AnnotArgsType.AnnotHighlight);
|
|
|
+ hightlight.ForgoundColor = color;
|
|
|
+ hightlight.Opacity = (annot as TextHighlightAnnotArgs).Transparency;
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(hightlight);
|
|
|
+ }
|
|
|
+ else if (annot is TextUnderlineAnnotArgs)
|
|
|
+ {
|
|
|
+ var color = (annot as TextUnderlineAnnotArgs).Color;
|
|
|
+ UnderLineColor = new SolidColorBrush(color);
|
|
|
+
|
|
|
+ Settings.Default.AppProperties.Annotate.UnderLineColor = color;
|
|
|
+
|
|
|
+ var Underline = GetAnnotDefault(AnnotArgsType.AnnotUnderline);
|
|
|
+ Underline.ForgoundColor = color;
|
|
|
+ Underline.Opacity = (annot as TextUnderlineAnnotArgs).Transparency;
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(Underline);
|
|
|
+ }
|
|
|
+ else if (annot is TextStrikeoutAnnotArgs)
|
|
|
+ {
|
|
|
+ var color = (annot as TextStrikeoutAnnotArgs).Color;
|
|
|
+ StrikeoutColor = new SolidColorBrush(color);
|
|
|
+
|
|
|
+ Settings.Default.AppProperties.Annotate.StrikethroughColor = color;
|
|
|
+
|
|
|
+ var Strikeout = GetAnnotDefault(AnnotArgsType.AnnotStrikeout);
|
|
|
+ Strikeout.ForgoundColor = color;
|
|
|
+ Strikeout.Opacity = (annot as TextStrikeoutAnnotArgs).Transparency;
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(Strikeout);
|
|
|
+ }
|
|
|
+ else if (annot is FreehandAnnotArgs)
|
|
|
+ {
|
|
|
+ var freeHand = annot as FreehandAnnotArgs;
|
|
|
+ var color = freeHand.InkColor;
|
|
|
+
|
|
|
+ Settings.Default.AppProperties.Annotate.FreeHandColor = color;
|
|
|
+
|
|
|
+ var FreehandDefault = GetAnnotDefault(AnnotArgsType.AnnotFreehand);
|
|
|
+ FreehandDefault.ForgoundColor = color;
|
|
|
+ FreehandDefault.Opacity = freeHand.Transparency;
|
|
|
+ FreehandDefault.Thickness = freeHand.LineWidth;
|
|
|
+
|
|
|
+ var isSolid = AnnotTransfer.IsSolidStyle(freeHand.LineDash);
|
|
|
+ if (isSolid)
|
|
|
+ {
|
|
|
+ FreehandDefault.DashArray = null;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ FreehandDefault.DashArray = new List<double>();
|
|
|
+ foreach (var item in freeHand.LineDash.Dashes)
|
|
|
+ {
|
|
|
+ FreehandDefault.DashArray.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(FreehandDefault);
|
|
|
+ }
|
|
|
+ else if (annot is FreeTextAnnotArgs)
|
|
|
+ {
|
|
|
+ var freeText = annot as FreeTextAnnotArgs;
|
|
|
+ Settings.Default.AppProperties.Annotate.TextAnnoteColor = freeText.FontColor;
|
|
|
+ Settings.Default.AppProperties.Annotate.TextFontFamaily = freeText.FontFamily.ToString();
|
|
|
+ Settings.Default.AppProperties.Annotate.TextAlign = freeText.Align;
|
|
|
+
|
|
|
+ var FreeTextDefalut = GetAnnotDefault(AnnotArgsType.AnnotFreeText);
|
|
|
+ FreeTextDefalut.ForgoundColor = freeText.FontColor;
|
|
|
+ FreeTextDefalut.FontFamily = freeText.FontFamily.ToString();
|
|
|
+ FreeTextDefalut.TextAlign = freeText.Align;
|
|
|
+ FreeTextDefalut.FontSize = freeText.FontSize;
|
|
|
+ FreeTextDefalut.FontWeight = freeText.FontWeight;
|
|
|
+ FreeTextDefalut.FontStyle = freeText.FontStyle;
|
|
|
+ FreeTextDefalut.BackgroundColor = freeText.BgColor;
|
|
|
+ FreeTextDefalut.Opacity = (annot as FreeTextAnnotArgs).Transparency;
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(FreeTextDefalut);
|
|
|
+ }
|
|
|
+ else if (annot is StickyAnnotArgs)
|
|
|
+ {
|
|
|
+ var color = (annot as StickyAnnotArgs).Color;
|
|
|
+ Settings.Default.AppProperties.Annotate.NoteAnnoteColor = color;
|
|
|
+ var StickyDefalut = GetAnnotDefault(AnnotArgsType.AnnotSticky);
|
|
|
+ StickyDefalut.ForgoundColor = color;
|
|
|
+
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(StickyDefalut);
|
|
|
+ }
|
|
|
+ else if (annot is SquareAnnotArgs)
|
|
|
+ {
|
|
|
+ var square = annot as SquareAnnotArgs;
|
|
|
+ var bgColor = square.BgColor;
|
|
|
+ Settings.Default.AppProperties.Annotate.RectangleFillColor = bgColor;
|
|
|
+ var borderColor = square.LineColor;
|
|
|
+ Settings.Default.AppProperties.Annotate.RectangleBorderColor = borderColor;
|
|
|
+
|
|
|
+ var SquareDefalut = GetAnnotDefault(AnnotArgsType.AnnotSquare);
|
|
|
+ SquareDefalut.BorderColor = borderColor;
|
|
|
+ SquareDefalut.BackgroundColor = bgColor;
|
|
|
+ SquareDefalut.Opacity = square.Transparency;
|
|
|
+ SquareDefalut.Thickness = square.LineWidth;
|
|
|
+
|
|
|
+ var isSolid = AnnotTransfer.IsSolidStyle(square.LineDash);
|
|
|
+ if (isSolid)
|
|
|
+ {
|
|
|
+ SquareDefalut.DashArray = null;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SquareDefalut.DashArray = new List<double>();
|
|
|
+ foreach (var item in square.LineDash.Dashes)
|
|
|
+ {
|
|
|
+ SquareDefalut.DashArray.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(SquareDefalut);
|
|
|
+ }
|
|
|
+ else if (annot is CircleAnnotArgs)
|
|
|
+ {
|
|
|
+ var circle = annot as CircleAnnotArgs;
|
|
|
+ var bgColor = circle.BgColor;
|
|
|
+ Settings.Default.AppProperties.Annotate.CircleFillColor = bgColor;
|
|
|
+ var borderColor = circle.LineColor;
|
|
|
+ Settings.Default.AppProperties.Annotate.CircleBorderColor = borderColor;
|
|
|
+
|
|
|
+ var CircleDefalut = GetAnnotDefault(AnnotArgsType.AnnotCircle);
|
|
|
+ CircleDefalut.BorderColor = borderColor;
|
|
|
+ CircleDefalut.BackgroundColor = bgColor;
|
|
|
+ CircleDefalut.Opacity = circle.Transparency;
|
|
|
+ CircleDefalut.Thickness = circle.LineWidth;
|
|
|
+
|
|
|
+ var isSolid = AnnotTransfer.IsSolidStyle(circle.LineDash);
|
|
|
+ if (isSolid)
|
|
|
+ {
|
|
|
+ CircleDefalut.DashArray = null;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CircleDefalut.DashArray = new List<double>();
|
|
|
+ foreach (var item in circle.LineDash.Dashes)
|
|
|
+ {
|
|
|
+ CircleDefalut.DashArray.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(CircleDefalut);
|
|
|
+ }
|
|
|
+ else if (annot is LineAnnotArgs)
|
|
|
+ {
|
|
|
+ var line = (annot as LineAnnotArgs);
|
|
|
+ var color = (annot as LineAnnotArgs).LineColor;
|
|
|
+ Settings.Default.AppProperties.Annotate.LineColor = color;
|
|
|
+
|
|
|
+ var lineDefalut = GetAnnotDefault(AnnotArgsType.AnnotLine);
|
|
|
+ lineDefalut.BorderColor = color;
|
|
|
+ lineDefalut.Opacity = (annot as LineAnnotArgs).Transparency;
|
|
|
+ lineDefalut.Thickness = (annot as LineAnnotArgs).LineWidth;
|
|
|
+
|
|
|
+ var isSolid = AnnotTransfer.IsSolidStyle(line.LineDash);
|
|
|
+ if (isSolid)
|
|
|
+ {
|
|
|
+ lineDefalut.DashArray = null;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ lineDefalut.DashArray = new List<double>();
|
|
|
+ foreach (var item in line.LineDash.Dashes)
|
|
|
+ {
|
|
|
+ lineDefalut.DashArray.Add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ SettingHelper.SetAnnotDefaultProperty(lineDefalut);
|
|
|
+ }
|
|
|
+
|
|
|
+ Settings.Default.Save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private DefaultAnnotProperty GetAnnotDefault(AnnotArgsType annotArgsType)
|
|
|
+ {
|
|
|
+ var Annot = SettingHelper.GetAnnotDefaultProperty(annotArgsType);
|
|
|
+ if (Annot == null)
|
|
|
+ {
|
|
|
+ Annot = new DefaultAnnotProperty();
|
|
|
+ Annot.AnnotToolType = annotArgsType;
|
|
|
+ }
|
|
|
+ return Annot;
|
|
|
+ }
|
|
|
+
|
|
|
+ private System.Windows.Controls.Primitives.Popup popup = null;
|
|
|
+
|
|
|
+ //更改颜色
|
|
|
+ private async void AnnotColorPalette_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ var item = new ColorDropBoxPop();
|
|
|
+ item.DataContext = menu;
|
|
|
+ item.ColorSelected -= AnnotMenu_ColorSelected;
|
|
|
+ item.ColorSelected += AnnotMenu_ColorSelected;
|
|
|
+
|
|
|
+ if (popup == null)
|
|
|
+ popup = new System.Windows.Controls.Primitives.Popup();
|
|
|
+
|
|
|
+ ContentControl window = null;
|
|
|
+ if (PDFViewer.Parent as ContentControl != null)
|
|
|
+ window = PDFViewer.Parent as ContentControl;
|
|
|
+ else
|
|
|
+ window = App.Current.MainWindow;
|
|
|
+
|
|
|
+ popup.Child = item;
|
|
|
+ popup.PlacementRectangle = new Rect(Mouse.GetPosition(window), new Size(item.Width, item.Height));
|
|
|
+ popup.Placement = System.Windows.Controls.Primitives.PlacementMode.MousePoint;
|
|
|
+ popup.PlacementTarget = window;
|
|
|
+ popup.IsOpen = true;
|
|
|
+
|
|
|
+ Window parentWnd = Window.GetWindow(App.Current.MainWindow);
|
|
|
+ if (parentWnd != null)
|
|
|
+ {
|
|
|
+ parentWnd.MouseDown -= parentWnd_MouseDown;
|
|
|
+ parentWnd.MouseDown += parentWnd_MouseDown;
|
|
|
+ }
|
|
|
+
|
|
|
+ while (popup.IsOpen)
|
|
|
+ await Task.Delay(20);
|
|
|
+
|
|
|
+ parentWnd.MouseDown -= parentWnd_MouseDown;
|
|
|
+ popup = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void parentWnd_MouseDown(object sender, MouseButtonEventArgs e)
|
|
|
+ {
|
|
|
+ var ui = Mouse.DirectlyOver as FrameworkElement;
|
|
|
+ if (ui != null)
|
|
|
+ {
|
|
|
+ if (popup != null)
|
|
|
+ {
|
|
|
+ popup.IsOpen = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AnnotMenu_ColorSelected(object sender, Color e)
|
|
|
+ {
|
|
|
+ if (sender != null)
|
|
|
+ {
|
|
|
+ var menu = (sender as FrameworkElement).DataContext as CusMenuItem;
|
|
|
+ if (menu == null) return;
|
|
|
+
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ if (annot is FreehandAnnotArgs || annot is StickyAnnotArgs || annot is LineAnnotArgs)
|
|
|
+ {
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.Color, e);
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ else if (annot is FreeTextAnnotArgs)
|
|
|
+ {
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ if (menu.tag.ToString() == "FontColor")
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.FontColor, e);
|
|
|
+ else
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.FillColor, e);
|
|
|
+
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ else if (annot is SquareAnnotArgs || annot is CircleAnnotArgs)
|
|
|
+ {
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ if (menu.tag.ToString() == "FillColor")
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.FillColor, e);
|
|
|
+ else
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.Color, e);
|
|
|
+
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ else if (annot is TextHighlightAnnotArgs || annot is TextUnderlineAnnotArgs || annot is TextStrikeoutAnnotArgs)
|
|
|
+ {
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.Color, e);
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //添加笔记
|
|
|
+ private void AnnotAddNoteText_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ PopAnnotNoteText(annot);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PopAnnotNoteText(AnnotHandlerEventArgs annot)
|
|
|
+ {
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ AnnotationHandlerEventArgs args = new AnnotationHandlerEventArgs();
|
|
|
+
|
|
|
+ args.ClientRect = annot.ClientRect;
|
|
|
+ args.AnnotHandlerEventArgs = annot;
|
|
|
+ args.PageIndex = annot.PageIndex;
|
|
|
+ args.AnnotIndex = annot.AnnotIndex;
|
|
|
+ args.EventType = annot.EventType;
|
|
|
+ args.CreateTime = annot.CreateTime;
|
|
|
+ args.UpdateTime = annot.UpdateTime;
|
|
|
+ args.Content = annot.Content;
|
|
|
+ args.MarkupContent = annot.MarkupContent;
|
|
|
+ args.Author = annot.Author;
|
|
|
+ args.Locked = annot.Locked;
|
|
|
+ args.ReadOnly = annot.ReadOnly;
|
|
|
+ args.FormField = annot.FormField;
|
|
|
+ args.Document = PDFViewer.Document;
|
|
|
+
|
|
|
+ DialogParameters value = new DialogParameters();
|
|
|
+ value.Add(ParameterNames.Annotation, args);
|
|
|
+ dialogs.ShowDialog(DialogNames.AddAnnotationDialog, value, e =>
|
|
|
+ {
|
|
|
+ if (e.Result == ButtonResult.OK && e.Parameters != null)
|
|
|
+ {
|
|
|
+ PDFViewer.UndoManager.CanSave = true;
|
|
|
+ if (e.Parameters.ContainsKey(ParameterNames.Annotation) && e.Parameters.ContainsKey(ParameterNames.AnnotEvent))
|
|
|
+ {
|
|
|
+ AnnotationHandlerEventArgs annotation = e.Parameters.GetValue<AnnotationHandlerEventArgs>(ParameterNames.Annotation);
|
|
|
+ //RefreshOneListItem(annotation.AnnotHandlerEventArgs);
|
|
|
+ events.GetEvent<RefreshAnnotEvent>().Publish(new RefreshAnnotArgs() { Unicode = App.mainWindowViewModel.SelectedItem.Unicode, Annotation = annotation });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //手绘
|
|
|
+ private void FreeHandLineStyle_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as FreehandAnnotArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ if (menu.tag.ToString() == "Solid")
|
|
|
+ {
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.LineStyle, AnnotTransfer.GetLineDashStyle(true));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.LineStyle, AnnotTransfer.GetLineDashStyle(false));
|
|
|
+ }
|
|
|
+
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //文本
|
|
|
+
|
|
|
+ private void FreeTextFontFamily_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.FontFamily, new FontFamily(menu.tag.ToString()));
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void FreeTextAglin_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ var tag = menu.control.Tag;
|
|
|
+ if (annot != null && tag != null)
|
|
|
+ {
|
|
|
+ var strTag = tag.ToString();
|
|
|
+
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ if (strTag == "Left")
|
|
|
+ {
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.TextAlign, TextAlignment.Left);
|
|
|
+ }
|
|
|
+ else if (strTag == "Center")
|
|
|
+ {
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.TextAlign, TextAlignment.Center);
|
|
|
+ }
|
|
|
+ else if (strTag == "Right")
|
|
|
+ {
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.TextAlign, TextAlignment.Right);
|
|
|
+ }
|
|
|
+ else if (strTag == "Justify")
|
|
|
+ {
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.TextAlign, TextAlignment.Justify);
|
|
|
+ }
|
|
|
+
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //便签
|
|
|
+
|
|
|
+ private void StrikeNoteEditStrike_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ var sticky = annot as StickyAnnotArgs;
|
|
|
+ sticky.PopupEditWnd();
|
|
|
+
|
|
|
+ #region 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
|
|
|
+
|
|
|
+ //isRightMenuAddAnnot = false;
|
|
|
+
|
|
|
+ #endregion 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //形状
|
|
|
+
|
|
|
+ private void ShapeLineStyle_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as AnnotHandlerEventArgs;
|
|
|
+ var tag = menu.control.Tag;
|
|
|
+ if (annot != null && tag != null)
|
|
|
+ {
|
|
|
+ var strTag = tag.ToString();
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ if (strTag == "Solid")
|
|
|
+ {
|
|
|
+ var dashStyle = AnnotTransfer.GetLineDashStyle(true);
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.LineStyle, dashStyle);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var dashStyle = AnnotTransfer.GetLineDashStyle(false);
|
|
|
+ AnnotEvent?.UpdateAttrib(AnnotAttrib.LineStyle, dashStyle);
|
|
|
+ }
|
|
|
+ AnnotEvent?.UpdateAnnot();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ShapeLineDirect_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as LineAnnotArgs;
|
|
|
+ var tag = menu.control.Tag;
|
|
|
+ if (annot != null && tag != null)
|
|
|
+ {
|
|
|
+ var strTag = tag.ToString();
|
|
|
+ var AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annot, annot.GetAnnotAttrib());
|
|
|
+ if (strTag == "Ver")
|
|
|
+ {
|
|
|
+ annot.SetLineVertical();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ annot.SetLineHorizontal();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void Link_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj is CusMenuItem menuItem)
|
|
|
+ {
|
|
|
+ if (menuItem.Parameter is LinkAnnotArgs linkAnnotArgs)
|
|
|
+ {
|
|
|
+ var result = PDFViewer.RemovePageAnnot(linkAnnotArgs.PageIndex, linkAnnotArgs.AnnotIndex);
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
|
|
|
+ bool isTabItemAnnotation = IsBOTATabItemShow(out BOTAContentViewModel bOTAContentViewModel, out BOTAContent bOTAContent, "TabItemAnnotation");
|
|
|
+ if (isTabItemAnnotation)
|
|
|
+ {
|
|
|
+ AnnotationContentViewModel viewModel = GetAnnotationContentViewModel(bOTAContentViewModel, out AnnotationContent annotation);
|
|
|
+ if (viewModel != null)
|
|
|
+ {
|
|
|
+ viewModel.UpdateModifiedAnnot(linkAnnotArgs.PageIndex, linkAnnotArgs.AnnotIndex, true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //图章
|
|
|
+ private void StampExportPicture_Menu(object obj)
|
|
|
+ {
|
|
|
+ if (obj as CusMenuItem != null)
|
|
|
+ {
|
|
|
+ var menu = obj as CusMenuItem;
|
|
|
+ var annot = menu.Parameter as StampAnnotArgs;
|
|
|
+ if (annot != null)
|
|
|
+ {
|
|
|
+ Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
|
|
|
+ var format = menu.tag.ToString();
|
|
|
+ if (format == "PDF")
|
|
|
+ dlg.Filter = "PDF|*.pdf";
|
|
|
+ else
|
|
|
+ dlg.Filter = format + "|*." + format.ToLower();
|
|
|
+
|
|
|
+ dlg.DefaultExt = "." + menu.tag.ToString().ToLower();
|
|
|
+ dlg.FileName = PDFViewer.Document.FileName;
|
|
|
+ if (dlg.ShowDialog() == true)
|
|
|
+ {
|
|
|
+ var stampPicture = dlg.FileName;
|
|
|
+ if (menu.tag.ToString() == "PDF")
|
|
|
+ {
|
|
|
+ var writeStamp = annot.GetStampDrawing();
|
|
|
+ var tempDoc = new CPDFViewer();
|
|
|
+ tempDoc.CreateDocument();
|
|
|
+ if (tempDoc.Document == null)
|
|
|
+ {
|
|
|
+ AlertsMessage alertsMessage = new AlertsMessage();
|
|
|
+ alertsMessage.ShowDialog("", "创建文件失败.", "OK");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ byte[] buffer;
|
|
|
+ var encoder = new PngBitmapEncoder();
|
|
|
+ encoder.Frames.Add(BitmapFrame.Create(writeStamp));
|
|
|
+ using (var memoryStream = new MemoryStream())
|
|
|
+ {
|
|
|
+ encoder.Save(memoryStream);
|
|
|
+ buffer = memoryStream.ToArray();
|
|
|
+ }
|
|
|
+
|
|
|
+ tempDoc.Document.InsertPage(0, writeStamp.PixelWidth, writeStamp.PixelHeight, buffer, CPDFDocumentImageMode.CPDFDocumentImageModeScaleAspectFit);
|
|
|
+ var result = tempDoc.Document.WriteToFilePath(dlg.FileName);
|
|
|
+ if (result)
|
|
|
+ {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var writeStamp = annot.GetStampDrawing();
|
|
|
+ using (FileStream stream5 = new FileStream(stampPicture, FileMode.Create))
|
|
|
+ {
|
|
|
+ PngBitmapEncoder encoder5 = new PngBitmapEncoder();
|
|
|
+ encoder5.Frames.Add(BitmapFrame.Create(writeStamp));
|
|
|
+ encoder5.Save(stream5);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion 注释右键菜单事件
|
|
|
+
|
|
|
#region 快捷键
|
|
|
|
|
|
private void ShortCut_KeyDown(object sender, KeyEventArgs e)
|
|
|
{
|
|
|
if (KeyEventsHelper.IsSingleKey(Key.Escape))
|
|
|
{
|
|
|
- BtnHandIsChecked = true;
|
|
|
- PDFViewer.SetMouseMode(MouseModes.Scroll);
|
|
|
+ //BtnHandIsChecked = true;
|
|
|
+ PDFViewer.SetMouseMode(MouseModes.PanTool);
|
|
|
PDFViewer.ClearSelectAnnots();
|
|
|
StrAnnotToolChecked = "";
|
|
|
ShowPropertyPanel(false);
|