using ComPDFKit.Import; using ComPDFKit.PDFAnnotation; using ComPDFKit.PDFDocument; using ComPDFKit.PDFPage; using ComPDFKitViewer.AnnotEvent; using ComPDFKitViewer.PdfViewer; using PDF_Office.Helper; using PDF_Office.Model.BOTA; using PDF_Office.ViewModels.BOTA; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PDF_Office.Views.BOTA { /// /// AnnotationListItem.xaml 的交互逻辑 /// public partial class AnnotationListItem : UserControl { //private Brush strikeoutColor = new SolidColorBrush(Color.FromRgb(0xFF, 0xBB, 0x00)); public AnnotationListItem() { InitializeComponent(); } private void GridIco_Loaded(object sender, RoutedEventArgs e) { Grid grid = e.Source as Grid; var args = grid.DataContext as AnnotationHandlerEventArgs; AnnotHandlerEventArgs data = args.AnnotHandlerEventArgs; if (data == null) { return; } switch (data.EventType) { case AnnotArgsType.AnnotFreeText: BtnAnnotFreeText.Visibility = Visibility.Visible; TxbMarkUpContent.Foreground = new SolidColorBrush((data as FreeTextAnnotArgs).FontColor); break; case AnnotArgsType.AnnotHighlight: BtnHighlight.Visibility = Visibility.Visible; PathHighlight.Fill = new SolidColorBrush((data as TextHighlightAnnotArgs).Color); //TxbContext.Text = data.Content; if (!string.IsNullOrEmpty(TxbContext.Text)) { TxbContext.Background = new SolidColorBrush((data as TextHighlightAnnotArgs).Color); } break; case AnnotArgsType.AnnotFreehand: BtnFreeHand.Visibility = Visibility.Visible; PathFreehand.Fill = new SolidColorBrush((data as FreehandAnnotArgs).InkColor); ImageContext.Visibility = Visibility.Visible; TxbContext.Visibility = Visibility.Collapsed; //var encoder = new PngBitmapEncoder(); //encoder.Frames.Add(BitmapFrame.Create((BitmapSource)ImageContext.Source)); //FileStream file = new FileStream(String.Format($@"C:\Users\oyxh\Desktop\images\PDFText\{data.AnnotIndex}.png"), FileMode.Create); //encoder.Save(file); //file.Close(); break; case AnnotArgsType.AnnotSquiggly://波浪线 AnnotSquiggly.Visibility = Visibility.Visible; AnnotSquigglycolor.Stroke = new SolidColorBrush((data as TextSquigglyAnnotArgs).Color); #region TO DO //TextDecoration mySquiggly = new TextDecoration(); //Pen myPen = new Pen(); //myPen.Brush = new SolidColorBrush((data as TextSquigglyAnnotArgs).Color); //myPen.Brush.Opacity = 0.8; //myPen.Thickness = 2; //myPen.DashStyle = DashStyles.Dash; //mySquiggly.Pen = myPen; //mySquiggly.PenThicknessUnit = TextDecorationUnit.FontRecommended; //TextDecorationCollection myCollection = new TextDecorationCollection(); //myCollection.Add(mySquiggly); //TxbContext.TextDecorations = myCollection; #endregion TO DO break; case AnnotArgsType.AnnotStamp: BtnAnnotStamp.Visibility = Visibility.Visible; break; case AnnotArgsType.AnnotStrikeout://删除线 BtnAnnotStrikeout.Visibility = Visibility.Visible; PathStrikeoutyColor.Fill = new SolidColorBrush((data as TextStrikeoutAnnotArgs).Color); #region to do //TextDecoration myStrikeout = new TextDecoration(); //Pen myPen2 = new Pen(); //myPen2.Brush = new SolidColorBrush((data as TextStrikeoutAnnotArgs).Color); //myPen2.Brush.Opacity = 0.8; //myPen2.Thickness = 1; //myStrikeout.Pen = myPen2; //myStrikeout.PenOffset = -3; //myStrikeout.PenThicknessUnit = TextDecorationUnit.FontRecommended; //TextDecorationCollection myCollection2 = new TextDecorationCollection(); //myCollection2.Add(myStrikeout); //因为波浪线无法实现 暂时只显示文字 不显示下划线,删除线等 //TxbContext.TextDecorations = myCollection2; #endregion to do break; case AnnotArgsType.AnnotSticky://便签 BtnAnnotSticky.Visibility = Visibility; PathSticky.Fill = new SolidColorBrush((data as StickyAnnotArgs).Color); break; case AnnotArgsType.AnnotUnderline: BtnUnderLine.Visibility = Visibility.Visible; RectangleUnderline.Fill = new SolidColorBrush((data as TextUnderlineAnnotArgs).Color); #region TO DO //TextDecoration myUnderline = new TextDecoration(); //Pen myPen1 = new Pen(); //myPen1.Brush = new SolidColorBrush((data as TextUnderlineAnnotArgs).Color); //myPen1.Brush.Opacity = 0.8; //myPen1.Thickness = 2; //myUnderline.Pen = myPen1; //myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended; //TextDecorationCollection myCollection1 = new TextDecorationCollection(); //myCollection1.Add(myUnderline); //TxbContext.TextDecorations = myCollection1; #endregion TO DO break; case AnnotArgsType.AnnotLine: if ((data as LineAnnotArgs).HeadLineType >= (C_LINE_TYPE)1 || (data as LineAnnotArgs).TailLineType >= (C_LINE_TYPE)1) { BtnSharpArrow.Visibility = Visibility.Visible; PathArrow.Fill = new SolidColorBrush((data as LineAnnotArgs).LineColor); } else { PathSharpLine.Fill = new SolidColorBrush((data as LineAnnotArgs).LineColor); BtnSharpLine.Visibility = Visibility.Visible; } ///对于形状注释等只有Note 的处理 if (!string.IsNullOrEmpty(data.Content) && string.IsNullOrEmpty(data.MarkupContent)) { TxbMarkUpContent.Text = Regex.Replace(data.Content, "[\r\n]", " "); TxbContext.Text = ""; } break; case AnnotArgsType.AnnotSquare: BtnAnnotSquare.Visibility = Visibility.Visible; RectAnnotSquare.Stroke = new SolidColorBrush((data as SquareAnnotArgs).LineColor); RectAnnotSquare.Fill = new SolidColorBrush((data as SquareAnnotArgs).BgColor); ///对于形状注释等只有Note 的处理 if (!string.IsNullOrEmpty(data.Content) && string.IsNullOrEmpty(data.MarkupContent)) { TxbMarkUpContent.Text = Regex.Replace(data.Content, "[\r\n]", " "); TxbContext.Text = ""; } break; case AnnotArgsType.AnnotCircle: BtnAnnotCircle.Visibility = Visibility.Visible; EllipseCircle.Stroke = new SolidColorBrush((data as CircleAnnotArgs).LineColor); EllipseCircle.Fill = new SolidColorBrush((data as CircleAnnotArgs).BgColor); ///对于形状注释等只有Note 的处理 if (!string.IsNullOrEmpty(data.Content) && string.IsNullOrEmpty(data.MarkupContent)) { TxbMarkUpContent.Text = Regex.Replace(data.Content, "[\r\n]", " "); TxbContext.Text = ""; } break; default: break; } } } }