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