using ComPDFKit.PDFPage;
using compdfkit_tools.Edit;
using compdfkit_tools.PDFControl;
using ComPDFKitViewer;
using ComPDFKitViewer.PdfViewer;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
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;
using System.Xml.Linq;
namespace edit_ctrl_demo
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window,INotifyPropertyChanged
{
public bool CanUndo
{
get
{
if (PDFView != null)
{
return PDFView.UndoManager.CanUndo;
}
return false;
}
}
public bool CanRedo
{
get
{
if (PDFView != null)
{
return PDFView.UndoManager.CanRedo;
}
return false;
}
}
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
LoadDefaultDocument();
TitleBarTool.OpenFileEvent += TitleBarTool_OpenFileEvent;
PDFView.PDFEditActiveHandler += PDFView_PDFEditActiveHandler;
PDFView.UndoManager.PropertyChanged += UndoManager_PropertyChanged;
}
private void UndoManager_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
OnPropertyChanged(e.PropertyName);
}
///
/// 文字或图片块选中事件
///
private void PDFView_PDFEditActiveHandler(object sender, PDFEditEvent e)
{
if (e == null)
{
PDFEditContainer.Child= null;
return;
}
if(e.EditType==CPDFEditType.EditText)
{
PDFTextEditControl textEditControl= new PDFTextEditControl();
textEditControl.SetPDFTextEditData(e);
PDFEditContainer.Child = textEditControl;
return;
}
if(e.EditType== CPDFEditType.EditImage)
{
PDFImageEditControl imageEditControl= new PDFImageEditControl();
imageEditControl.InitWithPDFViewer(PDFView);
imageEditControl.SetPDFImageEditData(e);
PDFEditContainer.Child = imageEditControl;
return;
}
}
private void TitleBarTool_OpenFileEvent(object sender, string filePath)
{
ClearPDFEditState();
PDFView?.CloseDocument();
PDFView?.InitDocument(filePath);
PDFView?.Load();
PDFView?.SetMouseMode(MouseModes.PanTool);
}
private void LoadDefaultDocument()
{
string defaultFilePath = "..\\..\\..\\..\\developer_guide_windows.pdf";
PDFView?.InitDocument(defaultFilePath);
PDFView?.Load();
}
///
/// 文字编辑模式
///
private void PDFTextEditButton_Click(object sender, RoutedEventArgs e)
{
ToggleButton senderBtn=sender as ToggleButton;
if(senderBtn != null)
{
PDFImageEditButton.IsChecked = false;
if (senderBtn.IsChecked == true)
{
PDFView?.SetPDFEditType(CPDFEditType.EditText);
PDFView?.SetMouseMode(MouseModes.PDFEdit);
PDFView?.ReloadDocument();
}
else
{
PDFView?.SetPDFEditType(CPDFEditType.None);
PDFView?.SetMouseMode(MouseModes.PanTool);
PDFView?.ReloadDocument();
}
}
}
///
/// 图片编辑模式
///
private void PDFImageEditButton_Click(object sender, RoutedEventArgs e)
{
ToggleButton senderBtn = sender as ToggleButton;
if (senderBtn != null)
{
PDFTextEditButton.IsChecked= false;
if (senderBtn.IsChecked == true)
{
PDFView?.SetPDFEditType(CPDFEditType.EditImage);
PDFView?.SetMouseMode(MouseModes.PDFEdit);
PDFView?.ReloadDocument();
}
else
{
PDFView?.SetPDFEditType(CPDFEditType.None);
PDFView?.SetMouseMode(MouseModes.PanTool);
PDFView?.ReloadDocument();
}
}
}
private void ClearPDFEditState()
{
PDFTextEditButton.IsChecked = false;
PDFImageEditButton.IsChecked = false;
PDFEditContainer.Child = null;
}
private void UndoBtn_Click(object sender, RoutedEventArgs e)
{
PDFView?.UndoManager?.Undo();
}
private void RedoBtn_Click(object sender, RoutedEventArgs e)
{
PDFView?.UndoManager?.Redo();
}
}
}