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
{
///
/// PDFPageTurningControl.xaml 的交互逻辑
///
public partial class CPDFPageTurningControl : UserControl
{
public CPDFViewer pdfViewer;
public CPDFPageTurningControl()
{
InitializeComponent();
CPDFPageTurningUI.Loaded += PDFPageTurningUI_Loaded;
}
public void InitWithPDFViewer(CPDFViewer pdfViewer)
{
this.pdfViewer = pdfViewer;
pdfViewer.InfoChanged += PdfViewer_InfoChanged;
}
///
/// 翻页传递到自定义控件中,修改页码
///
///
///
private void PdfViewer_InfoChanged(object sender, KeyValuePair e)
{
if (e.Key == "PageNum")
{
CPDFPageTurningUI.PageIndex = pdfViewer.CurrentIndex + 1;
}
}
private void PDFPageTurningUI_Loaded(object sender, RoutedEventArgs e)
{
CPDFPageTurningUI.EnsureKey = Key.Enter;
CPDFPageTurningUI.GoToSpecificPageEvent += PDFPageTurningUI_GoToSpecificPageEvent;
CPDFPageTurningUI.GoToNextPageEvent += PDFPageTurningUI_GoToNextPageEvent;
CPDFPageTurningUI.GoToPreviousPageEvent += PDFPageTurningUI_GoToPreviousPageEvent;
}
///
/// 需要注意:
/// 在GoToPage之后不可以马上获取页码,此时页码正在延迟渲染
/// 页码变换的引起UI变化的函数应该写在PdfViewer_InfoChanged中
///
///
///
private void PDFPageTurningUI_GoToPreviousPageEvent(object sender, EventArgs e)
{
if (pdfViewer == null || pdfViewer.Document == null)
{
return;
}
if (pdfViewer.CurrentIndex <= 0)
{
return;
}
if (pdfViewer.ModeView == ComPDFKitViewer.ViewMode.Single || pdfViewer.ModeView == ComPDFKitViewer.ViewMode.SingleContinuous)
{
pdfViewer.GoToPage(pdfViewer.CurrentIndex - 1);
}
else
{
pdfViewer.GoToPage(pdfViewer.CurrentIndex - 2);
}
}
private void PDFPageTurningUI_GoToNextPageEvent(object sender, EventArgs e)
{
if (pdfViewer == null || pdfViewer.Document == null)
{
return;
}
if (pdfViewer.CurrentIndex >= pdfViewer.Document.PageCount)
{
return;
}
if (pdfViewer.ModeView == ComPDFKitViewer.ViewMode.Single || pdfViewer.ModeView == ComPDFKitViewer.ViewMode.SingleContinuous)
{
pdfViewer.GoToPage(pdfViewer.CurrentIndex + 1);
}
else
{
pdfViewer.GoToPage(pdfViewer.CurrentIndex + 2);
}
}
private void PDFPageTurningUI_GoToSpecificPageEvent(object sender, int e)
{
if (pdfViewer == null || pdfViewer.Document == null)
{
return;
}
if (e >= 1 && e <= pdfViewer.Document.PageCount)
{
pdfViewer.GoToPage(e - 1);
}
}
}
}