using ComPDFKit.PDFDocument; using compdfkit_tools.PDFControlUI; using ComPDFKitViewer.PdfViewer; using System; using System.Collections.Generic; using System.Linq; using System.Text; 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 compdfkit_tools.PDFControl { /// /// CPDFBookmarkControl.xaml 的交互逻辑 /// public partial class CPDFBookmarkControl : UserControl { /// /// PDFViewer /// private CPDFViewer pdfView; public CPDFBookmarkControl() { InitializeComponent(); Loaded += CPDFBookmarkControl_Loaded; } /// /// 控件加载完成 初始化相应事件绑定 /// private void CPDFBookmarkControl_Loaded(object sender, RoutedEventArgs e) { BookmarkAddUI.BookmarkAddEvent += BookmarkAddUI_BookmarkAddEvent; BookmarkResultUI.SelectionChanged += BookmarkResultUI_SelectionChanged; BookmarkResultUI.BookmarkChanged += BookmarkResultUI_BookmarkChanged; BookmarkResultUI.BookmarkDelete += BookmarkResultUI_BookmarkDelete; BookmarkResultUI.BookmarkClicked += BookmarkResultUI_BookmarkClicked; } /// /// 书签列表点击 跳转到书签页面 /// private void BookmarkResultUI_BookmarkClicked(object sender, int e) { GotoBookmarkPage(e); } /// /// 书签删除 /// private void BookmarkResultUI_BookmarkDelete(object sender, BookmarkChangeData e) { if (pdfView == null || pdfView.Document == null) { return; } pdfView.Document.RemoveBookmark(e.PageIndex); } /// /// 书签更改 /// private void BookmarkResultUI_BookmarkChanged(object sender, BookmarkChangeData e) { if (pdfView == null || pdfView.Document == null) { return; } pdfView.Document.EditBookmark(e.PageIndex, e.NewTitle); } /// /// 书签列表选中 跳转到书签页面 /// private void BookmarkResultUI_SelectionChanged(object sender, int e) { if (e >= 0) { BindBookmarkResult bindResult = BookmarkResultUI.GetItem(e); if (bindResult != null) { GotoBookmarkPage(bindResult.PageIndex); } } } /// /// 添加书签 /// private void BookmarkAddUI_BookmarkAddEvent(object sender, string e) { if (pdfView == null || pdfView.Document == null) { return; } if (!string.IsNullOrEmpty(e)) { int pageIndex = Math.Max(0, pdfView.CurrentIndex); bool addState= pdfView.Document.AddBookmark(new CPDFBookmark() { PageIndex = pageIndex, Title = e, }); if(addState) { LoadBookmark(); } } } /// /// 跳转书签页面 /// private void GotoBookmarkPage(int pageIndex) { if (pdfView == null || pdfView.Document == null) { return; } if (pageIndex >= 0) { pdfView.GoToPage(pageIndex); } } /// /// 设置PDFViewer /// public void InitWithPDFViewer(CPDFViewer newPDFView) { pdfView = newPDFView; } /// /// 加载书签列表 /// public void LoadBookmark() { if (pdfView == null || pdfView.Document == null) { return; } List bookmarkList = pdfView.Document.GetBookmarkList(); List bindBookmarkList = new List(); if (bookmarkList != null && bookmarkList.Count>0) { foreach (CPDFBookmark bookmark in bookmarkList.AsEnumerable().OrderBy(x=>x.PageIndex)) { bindBookmarkList.Add(new BindBookmarkResult() { PageIndex=bookmark.PageIndex, BookmarkTitle=bookmark.Title }); } } BookmarkResultUI?.SetBookmarkResult(bindBookmarkList); } } }