using ComPDFKit.PDFAnnotation; using ComPDFKit.PDFAnnotation.Form; using ComPDFKit.PDFDocument; using ComPDFKit.Tool; using ComPDFKit.Tool.Help; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; using static ComPDFKit.PDFAnnotation.CTextAttribute.CFontNameHelper; namespace Compdfkit_Tools.PDFControl { public partial class TextFieldProperty : UserControl { private TextBoxParam widgetParam = null; private CPDFTextWidget cPDFAnnotation = null; private PDFViewControl pdfViewerControl = null; private CPDFDocument cPDFDocument = null; public ObservableCollection SizeList { get; set; } = new ObservableCollection { 6,8,9,10,12,14,18,20,24,26,28,32,30,32,48,72 }; bool IsLoadedData = false; public TextFieldProperty() { InitializeComponent(); } #region Loaded public void SetProperty(AnnotParam annotParam, CPDFAnnotation annotation, CPDFDocument doc, PDFViewControl cPDFViewer) { widgetParam = (TextBoxParam)annotParam; cPDFAnnotation = (CPDFTextWidget)annotation; pdfViewerControl = cPDFViewer; cPDFDocument = doc; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { Binding SizeListbinding = new Binding(); SizeListbinding.Source = this; SizeListbinding.Path = new System.Windows.PropertyPath("SizeList"); FontSizeCombox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding); FieldNameText.Text = widgetParam.FieldName; FormFieldCombox.SelectedIndex = (int)ParamConverter.ConverterWidgetFormFlags(widgetParam.Flags, widgetParam.IsHidden); BorderColorPickerControl.SetCheckedForColor(ParamConverter.ConverterByteForColor(widgetParam.LineColor)); BackgroundColorPickerControl.SetCheckedForColor(ParamConverter.ConverterByteForColor(widgetParam.BgColor)); TextColorPickerControl.SetCheckedForColor(ParamConverter.ConverterByteForColor(widgetParam.FontColor)); SetFontName(widgetParam.FontName); SetFontStyle(widgetParam.IsItalic, widgetParam.IsBold); SetFontSize(widgetParam.FontSize); TextAlignmentCombox.SelectedIndex = (int)widgetParam.Alignment; DefaultText.Text = widgetParam.Text; chkMutiline.IsChecked = widgetParam.IsMultiLine; IsLoadedData = true; } private void UserControl_Unloaded(object sender, RoutedEventArgs e) { IsLoadedData = false; } private void SetFontSize(double size) { int index = SizeList.IndexOf((int)size); FontSizeCombox.SelectedIndex = index; } private void SetFontStyle(bool IsItalic, bool IsBold) { int index = 0; if (IsItalic && IsBold) { index = 3; } else if (IsItalic) { index = 2; } else if (IsBold) { index = 1; } FontStyleCombox.SelectedIndex = index; } private void SetFontName(string fontName) { int index = -1; List fontFamilyList = new List() { "Helvetica", "Courier", "Times" }; for (int i = 0; i < fontFamilyList.Count; i++) { if (fontFamilyList[i].ToLower().Contains(fontName.ToLower()) || fontName.ToLower().Contains(fontFamilyList[i].ToLower())) { index = i; } } FontCombox.SelectedIndex = index; } #endregion #region Updata private void FieldNameText_TextChanged(object sender, TextChangedEventArgs e) { if (IsLoadedData) { cPDFAnnotation.SetFieldName((sender as TextBox).Text); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void FormFieldCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { cPDFAnnotation.SetFlags(ParamConverter.GetFormFlags((ParamConverter.FormField)(sender as ComboBox).SelectedIndex, cPDFAnnotation)); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void BorderColorPickerControl_ColorChanged(object sender, EventArgs e) { if (IsLoadedData) { byte[] Color = new byte[3]; Color[0] = ((SolidColorBrush)BorderColorPickerControl.Brush).Color.R; Color[1] = ((SolidColorBrush)BorderColorPickerControl.Brush).Color.G; Color[2] = ((SolidColorBrush)BorderColorPickerControl.Brush).Color.B; cPDFAnnotation.SetWidgetBorderRGBColor(Color); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void BackgroundColorPickerControl_ColorChanged(object sender, EventArgs e) { if (IsLoadedData) { byte[] Color = new byte[3]; Color[0] = ((SolidColorBrush)BackgroundColorPickerControl.Brush).Color.R; Color[1] = ((SolidColorBrush)BackgroundColorPickerControl.Brush).Color.G; Color[2] = ((SolidColorBrush)BackgroundColorPickerControl.Brush).Color.B; cPDFAnnotation.SetWidgetBgRGBColor(Color); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void TextColorPickerControl_ColorChanged(object sender, EventArgs e) { if (IsLoadedData) { byte[] Color = new byte[3]; Color[0] = ((SolidColorBrush)TextColorPickerControl.Brush).Color.R; Color[1] = ((SolidColorBrush)TextColorPickerControl.Brush).Color.G; Color[2] = ((SolidColorBrush)TextColorPickerControl.Brush).Color.B; CTextAttribute cTextAttribute = cPDFAnnotation.GetTextAttribute(); cTextAttribute.FontColor = Color; cPDFAnnotation.SetTextAttribute(cTextAttribute); cPDFAnnotation.UpdateFormAp(); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void FontCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { CTextAttribute cTextAttribute = cPDFAnnotation.GetTextAttribute(); bool isBold = IsBold(cTextAttribute.FontName); bool isItalic = IsItalic(cTextAttribute.FontName); FontType fontType = GetFontType((sender as ComboBox).SelectedItem?.ToString()); cTextAttribute.FontName = ObtainFontName(fontType, isBold, isItalic); cPDFAnnotation.SetTextAttribute(cTextAttribute); cPDFAnnotation.UpdateFormAp(); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void FontStyleCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { CTextAttribute cTextAttribute = cPDFAnnotation.GetTextAttribute(); bool isItalic = false; bool isBold = false; switch ((sender as ComboBox).SelectedIndex) { case 0: break; case 1: isItalic = false; isBold = true; break; case 2: isItalic = true; isBold = false; break; case 3: isItalic = true; isBold = true; break; default: break; } FontType fontType = GetFontType(cTextAttribute.FontName); cTextAttribute.FontName = ObtainFontName(fontType, isBold, isItalic); cPDFAnnotation.SetTextAttribute(cTextAttribute); cPDFAnnotation.UpdateFormAp(); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void FontSizeCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { CTextAttribute cTextAttribute = cPDFAnnotation.GetTextAttribute(); cTextAttribute.FontSize = Convert.ToSingle((sender as ComboBox).SelectedItem); cPDFAnnotation.SetTextAttribute(cTextAttribute); cPDFAnnotation.UpdateFormAp(); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void TextAlignmentCombox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsLoadedData) { cPDFAnnotation.SetJustification((C_TEXT_ALIGNMENT)(sender as ComboBox).SelectedIndex); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void DefaultText_TextChanged(object sender, TextChangedEventArgs e) { if (IsLoadedData) { cPDFAnnotation.SetText((sender as TextBox).Text); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void chkMutiline_Checked(object sender, RoutedEventArgs e) { if (IsLoadedData) { cPDFAnnotation.SetMultiLine(true); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } private void chkMutiline_Unchecked(object sender, RoutedEventArgs e) { if (IsLoadedData) { cPDFAnnotation.SetMultiLine(false); pdfViewerControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame(); } } #endregion } }