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);
}
}
}