예제 #1
0
        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;
            }
        }
예제 #2
0
        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();
            }
        }