using ComPDFKitViewer.PdfViewer; using ComPDFKitViewer; using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; using ComPDFKit.PDFPage; using System.Windows.Controls.Primitives; using Microsoft.Win32; using System.Diagnostics; using System.Drawing; using System.IO; namespace Compdfkit_Tools.Edit { public partial class PDFImageEditControl : UserControl { public CPDFViewer PDFView { get; private set; } public PDFEditEvent EditEvent { get; set; } public PDFImageEditControl() { InitializeComponent(); Loaded += PDFImageEditControl_Loaded; Unloaded += PDFImageEditControl_Unloaded; } private void PDFImageEditControl_Unloaded(object sender, RoutedEventArgs e) { RotateUI.RotationChanged -= RotateUI_RotationChanged; FlipUI.FlipChanged -= FlipUI_FlipChanged; } public void InitWithPDFViewer(CPDFViewer newPDFView) { PDFView = newPDFView; } public void SetPDFImageEditData(PDFEditEvent newEvent) { EditEvent = null; if (newEvent != null && newEvent.EditType == CPDFEditType.EditImage) { SetImageTransparency(newEvent.Transparency); } EditEvent = newEvent; SetImageThumb(); } private void PDFImageEditControl_Loaded(object sender, RoutedEventArgs e) { RotateUI.RotationChanged += RotateUI_RotationChanged; FlipUI.FlipChanged += FlipUI_FlipChanged; } private void FlipUI_FlipChanged(object sender, bool e) { if (EditEvent != null) { if(e) { EditEvent.VerticalMirror = true; } else { EditEvent.HorizontalMirror = true; } EditEvent.UpdatePDFEditByEventArgs(); SetImageThumb(); } } private void RotateUI_RotationChanged(object sender, double e) { if (EditEvent != null) { EditEvent.Rotate = (int)e; EditEvent.UpdatePDFEditByEventArgs(); SetImageThumb(); } } private void Slider_DragStarted(object sender, DragStartedEventArgs e) { Slider slider = sender as Slider; if (slider != null) { slider.Tag = "false"; } } private void SliderOpacity_DragCompleted(object sender, DragCompletedEventArgs e) { Slider slider = sender as Slider; if (slider != null) { slider.Tag = "true"; } if (EditEvent != null) { EditEvent.Transparency = (int)(ImasgeOpacitySlider.Value * 255); EditEvent.UpdatePDFEditByEventArgs(); SetImageThumb(); } } private void SliderOpacity_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { Slider slider = sender as Slider; if(OpacityTextBox != null) { OpacityTextBox.Text = string.Format("{0}%", (int)(ImasgeOpacitySlider.Value * 100)); } if (slider != null && slider.Tag != null && slider.Tag.ToString() == "false") { return; } if (EditEvent != null) { EditEvent.Transparency = (int)(ImasgeOpacitySlider.Value * 255); EditEvent.UpdatePDFEditByEventArgs(); SetImageThumb(); } } private void ImageReplaceBtn_Click(object sender, RoutedEventArgs e) { if (EditEvent != null) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;"; if (openFileDialog.ShowDialog() == true) { EditEvent.ReplaceImagePath = openFileDialog.FileName; EditEvent.UpdatePDFEditByEventArgs(); EditEvent = null; } } } private void ImageExportBtn_Click(object sender, RoutedEventArgs e) { if (PDFView != null) { Dictionary> imageDict = PDFView.GetSelectedImages(); if (imageDict != null && imageDict.Count > 0) { System.Windows.Forms.FolderBrowserDialog folderBrowser = new System.Windows.Forms.FolderBrowserDialog(); if (folderBrowser.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string choosePath = folderBrowser.SelectedPath; string openPath = choosePath; try { foreach (int pageIndex in imageDict.Keys) { List imageList = imageDict[pageIndex]; foreach (Bitmap image in imageList) { string savePath = System.IO.Path.Combine(choosePath, Guid.NewGuid() + ".jpg"); image.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg); openPath = savePath; } } Process.Start("explorer", "/select,\"" + openPath + "\""); } catch (Exception ex) { } } } } } private void ImageClipBtn_Click(object sender, RoutedEventArgs e) { if (EditEvent != null) { EditEvent.ClipImage = true; EditEvent.UpdatePDFEditByEventArgs(); } } private void OpacityComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBoxItem selectItem = OpacityComboBox.SelectedItem as ComboBoxItem; if (selectItem != null && selectItem.Content != null) { if (double.TryParse(selectItem.Content.ToString().TrimEnd('%'), out double newOpacity)) { OpacityTextBox.Text = selectItem.Content.ToString(); ImasgeOpacitySlider.Value = newOpacity / 100.0; } } } public void SetImageThumb() { if (PDFView != null && EditEvent!=null) { try { Dictionary> imageDict = PDFView.GetSelectedImages(); foreach (int pageIndex in imageDict.Keys) { List imageList = imageDict[pageIndex]; if (imageList.Count > 0) { Bitmap bitmapImage = imageList[0]; MemoryStream memoryStream = new MemoryStream(); bitmapImage.Save(memoryStream, bitmapImage.RawFormat); BitmapImage imageShow = new BitmapImage(); imageShow.BeginInit(); imageShow.StreamSource = memoryStream; imageShow.EndInit(); ImageThumbUI.Source = imageShow; break; } } } catch (Exception ex) { } } } public void SetImageTransparency(double transparency) { ImasgeOpacitySlider.Value = transparency / 255D; OpacityTextBox.Text = string.Format("{0}%", (int)(Math.Ceiling(ImasgeOpacitySlider.Value * 100))); } } }