private void _viewerControl_Action(object sender, ActionEventArgs e) { switch (e.Action) { case "PageNumberChanged": GotoPage((int)e.Data, true); break; case "HighlightText": HighlightText((LeadRect)e.Data); break; case "GotoInternalLink": PDFInternalLink internalLink = (PDFInternalLink)e.Data; GotoLink(internalLink.TargetPageNumber, internalLink.TargetPageFitType, internalLink.TargetZoomPercent); break; case "GotoHyperlink": PDFHyperlink hyperlink = (PDFHyperlink)e.Data; GotoHyperlink(hyperlink.Hyperlink); break; default: break; } }
private void _rasterImageViewer_MouseDown(object sender, MouseEventArgs e) { _highlightSelectedImageObject = false; LeadPoint pixels = PhysicalToLogical(new LeadPoint(e.X, e.Y)); try { if (e.Button == MouseButtons.Right) { PDFObject pdfImageObject = HitTestPDFImageObject(pixels); LeadRect pdfImageObjectBounds = ToLeadRect(pdfImageObject.Bounds); if (!pdfImageObjectBounds.IsEmpty) { _selectedPdfImageObject = pdfImageObject; // Highlight image object _highlightSelectedImageObject = true; // User right clicked on valid PDF image object, so show context menu to allow him/her to save image ContextMenu cm = new ContextMenu(); cm.MenuItems.Add(new MenuItem("&Save As...", _pdfObject_SavePDFImageObjectAs)); this.ContextMenu = cm; } else { this.ContextMenu = null; _highlightSelectedImageObject = false; } } else { if (InteractiveMode == ViewerControlInteractiveMode.HighlightTextMode || InteractiveMode == ViewerControlInteractiveMode.SelectMode) { // See if we are over a hyper or internal link if (_document != null && _pageLinks != null) { foreach (PageLink link in _pageLinks) { // We pre-calculated the link bounds in image coordinates if (link.ImageBounds.Contains(pixels)) { if (link.HyperLinkIndex != -1) { PDFHyperlink hyperlink = _document.Pages[_currentPageNumber - 1].Hyperlinks[link.HyperLinkIndex]; DoAction("GotoHyperlink", hyperlink); } else if (link.InternalLinkIndex != -1) { PDFInternalLink internalLink = _document.InternalLinks[link.InternalLinkIndex]; DoAction("GotoInternalLink", internalLink); } } } } } } } finally { _rasterImageViewer.Invalidate(); } }