Class PDFViewer

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable

    public class PDFViewer
    extends javax.swing.JPanel
    implements javax.swing.Scrollable

    The PDFViewer class is a simple Swing PDF viewer application. It demonstrates the DocumentPanel class, and can be run directly from the JAR (via the PDFTool class) like so.

     java -jar bfopdf.jar filename
     

    The filename argument is optional, but if supplied will load the specified PDF.

    The viewer is also a Swing component, and can be used like any other JComponent by adding it to a Swing hierarchy. All of the operations on the PDFViewer object (and any of the objects it references, like features, DocumentPanels and so on) require that the viewer has been added to the Swing a hierarchy. Attempting to use any of these features will fail

    See the viewer tutorial for more detail on how to use this class and the "viewer" package.

    The following initialization parameters may be specified
    currentUserThe name of the current user - optional, but if set this will be set as the author field on any annotations created by the user
    unpromptedDirtyCloseWhether to prompt the user for confirmation when closing a window containng a PDF that has been modified
    dpiThe resolution of the screen. This can be set to override Toolkit.getScreenResolution() if required
    fontScaleThe factor by which to multiply all fonts used in Swing (note: this will affect all components, not just those in the PDF viewer)
    AuthenticatorThe class name of the default Authenticator to use. If not specified, defaults to our PromptingAuthenticator which will prompt for HTTP passwords via a Swing dialog. It can be set to any classname, or null to disable the authenticator.
    PromptingAuthenticator.NegotiateIf set to "false", the PromptingAuthenticator will not prompt for the "Negiate" family of URL authentication.

    This code is copyright the Big Faceless Organization. You're welcome to use, modify and distribute it in any form in your own projects, provided those projects continue to make use of the Big Faceless PDF library.

    Since:
    2.5, with major rewrites in 2.8
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      • Fields inherited from class javax.swing.JComponent

        listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
      • Fields inherited from class java.awt.Component

        accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • Constructor Summary

      Constructors 
      Constructor Description
      PDFViewer​(java.util.Collection<ViewerFeature> features)
      Creates new PDFViewer with the specified features
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void addDocumentPanelListener​(DocumentPanelListener listener)
      Add a DocumentPanelListener to any DocumentPanel objects created by this PDFViewer.
      void close()
      Close the PDFViewer.
      void closeDocumentPanel​(DocumentPanel panel)
      Close the specified DocumentPanel
      DocumentPanel getActiveDocumentPanel()
      Return the active DocumentPanel
      java.lang.String getCurrentUser()
      Get the name of the current user, as set by setCurrentUser(java.lang.String)
      DocumentPanelListener[] getDocumentPanelListeners()
      DocumentPanel[] getDocumentPanels()
      Return all the DocumentPanels in the viewer
      <T extends ViewerFeature>
      T
      getFeature​(java.lang.Class<T> clazz)
      Return the first ViewerFeature of the specified class, or null if it doesn't exist for this viewer.
      ViewerFeature getFeature​(java.lang.String feature)
      Return the ViewerFeature with the specified name, or null if it doesn't exist for this viewer.
      ViewerFeature[] getFeatures()
      Return the list of all features set in the viewer
      JSManager getJSManager()
      Return the JSManager object for this PDFViewer.
      KeyStoreManager getKeyStoreManager()
      Get the KeyStoreManager in use by this PDFViewer
      int getMaxZoom()
      Returns the maximum zoom level that should be used.
      javax.swing.JMenu getMenu​(java.lang.String name)
      Return the specified Menu.
      int getMinZoom()
      Returns the minimum zoom level that should be used.
      javax.swing.JComponent getNamedComponent​(java.lang.String name)
      Return a Component created by a ViewerFeature
      java.util.prefs.Preferences getPreferences()
      Return the Preferences object that should be used to store user preferences about the viewer, or null if preferences cannot be saved.
      java.awt.Dimension getPreferredScrollableViewportSize()
      Returns JComponent.getPreferredSize(); for the Scrollable interface.
      PropertyManager getPropertyManager()
      Get the PropertyManager in use by this PDFViewer
      int getScrollableBlockIncrement​(java.awt.Rectangle visibleRect, int orientation, int direction)
      Returns 0; for the Scrollable interface.
      boolean getScrollableTracksViewportHeight()
      Returns true; for the Scrollable interface.
      boolean getScrollableTracksViewportWidth()
      Returns true; for the Scrollable interface.
      int getScrollableUnitIncrement​(java.awt.Rectangle visibleRect, int orientation, int direction)
      Returns 0; for the Scrollable interface.
      boolean getUnpromptedDirtyClose()
      Return the value set by setUnpromptedDirtyClose(boolean)
      int[] getZoomIntervals()
      Returns the zoom intervals that should be used to increase or decrease zoom level.
      boolean hasFeature​(java.lang.String feature)
      Return true if the Viewer has a certain feature enabled.
      boolean hasFeature​(ViewerFeature feature)
      Return true if the Viewer has a certain feature enabled.
      boolean isClosing()
      Return true if the close() method has been called on the PDFViewer
      void loadPDF​(java.io.File ffile)
      Load a PDF into the viewer from a file.
      void loadPDF​(java.io.File file, int pagenumber)
      Load a PDF into the viewer from a file.
      void loadPDF​(java.io.File file, EncryptionHandler handler)
      Deprecated.
      this method has been superceded by the PDFImporter class
      void loadPDF​(java.io.File file, EncryptionHandler[] handlers)
      Deprecated.
      this method has been superceded by the PDFImporter class
      void loadPDF​(java.io.InputStream in, EncryptionHandler[] handlers, java.lang.String title, java.io.File file)
      Deprecated.
      this method has been superceded by the PDFImporter class
      void loadPDF​(java.net.URL url)
      Load a PDF into the viewer from a URL.
      void loadPDF​(PDFParser parser, java.lang.String name)
      Load a pre-loaded PDF into the viewer.
      void loadPDF​(PDFParser parser, java.lang.String name, int pagenumber)
      Load a pre-loaded PDF into the viewer.
      void loadPDF​(PDFParser parser, java.lang.String name, int pagenumber, java.io.File file, boolean addtomostrecent, DocumentPanelListener listener)
      Load a pre-loaded PDF into the viewer.
      void loadPDF​(PDF pdf, java.lang.String name)
      Load a pre-loaded PDF into the viewer.
      static void main​(java.lang.String[] args)
      The main() method can be invoked to run this class from the command line.
      static PDFViewer newPDFViewer()
      Create a new PDFViewer object in a frame of it's own.
      static PDFViewer newPDFViewer​(java.util.Collection<ViewerFeature> features)
      Create a new PDFViewer object in a frame of its own with the specified features.
      void putNamedComponent​(java.lang.String name, javax.swing.JComponent value)
      Add a named component to the viewers list
      void removeDocumentPanelListener​(DocumentPanelListener listener)
      void removeNotify()  
      void setCurrentUser​(java.lang.String user)
      Set the name of the current user (for Annotations).
      void setKeyStoreManager​(KeyStoreManager manager)
      Set the KeyStoreManager used by this PDFViewer
      javax.swing.JMenuItem setMenu​(java.lang.String name, char mnemonic, boolean documentrequired, java.awt.event.ActionListener listener)
      Add or replace a menu item in the viewer.
      void setPreferences​(java.util.prefs.Preferences preferences)
      Set the Preferences object returned from getPreferences().
      void setPropertyManager​(PropertyManager manager)
      Set the PropertyManager in use by this PDFViewer
      void setUnpromptedDirtyClose​(boolean ignore)
      Set whether to allow a window containing a modified PDF to be closed without prompting.
      void setZoomIntervals​(int[] intervals)
      Set the list of zoom intervals that should be used to increase or decrease zoom level.
      void setZoomRange​(int min, int max)
      Set the minumum and maximum zoom values.
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • PDFViewer

        public PDFViewer​(java.util.Collection<ViewerFeature> features)
        Creates new PDFViewer with the specified features
        Parameters:
        features - a Collection of ViewerFeature objects that are enabled
        Since:
        2.7.9
        See Also:
        ViewerFeature
    • Method Detail

      • getPreferences

        public java.util.prefs.Preferences getPreferences()
        Return the Preferences object that should be used to store user preferences about the viewer, or null if preferences cannot be saved.
        Since:
        2.11
      • setPreferences

        public void setPreferences​(java.util.prefs.Preferences preferences)
        Set the Preferences object returned from getPreferences(). There's normally no reason to do this unless particularly don't want to use the normal system preferences in the viewer
        Since:
        2.18.2
      • getJSManager

        public JSManager getJSManager()
        Return the JSManager object for this PDFViewer.
        Since:
        2.9
      • setPropertyManager

        public final void setPropertyManager​(PropertyManager manager)
        Set the PropertyManager in use by this PDFViewer
        Since:
        2.8.5
      • hasFeature

        public boolean hasFeature​(ViewerFeature feature)
        Return true if the Viewer has a certain feature enabled.
        Parameters:
        feature - the feature to look for
      • hasFeature

        public boolean hasFeature​(java.lang.String feature)
        Return true if the Viewer has a certain feature enabled.
        Parameters:
        feature - the name of the feature to look for
      • getFeatures

        public ViewerFeature[] getFeatures()
        Return the list of all features set in the viewer
      • getFeature

        public ViewerFeature getFeature​(java.lang.String feature)
        Return the ViewerFeature with the specified name, or null if it doesn't exist for this viewer.
        Parameters:
        feature - the name of the feature
        Since:
        2.8.5
      • getFeature

        public <T extends ViewerFeature> T getFeature​(java.lang.Class<T> clazz)
        Return the first ViewerFeature of the specified class, or null if it doesn't exist for this viewer. For example
         PDFImporter importer = viewer.getFeature(PDFImporter.class);
         
        Parameters:
        clazz - the Class of the ViewerFeature.
        Since:
        2.10.2
      • setMenu

        public javax.swing.JMenuItem setMenu​(java.lang.String name,
                                             char mnemonic,
                                             boolean documentrequired,
                                             java.awt.event.ActionListener listener)
        Add or replace a menu item in the viewer. Since 2.13.1, if the supplied listener is an Action then the Action.NAME and Action.ACCELERATOR_KEY (if set) will override the name and mnemonic supplied here, and the documentrequired parameter will be ignored, as the Action is expected to manage it's own enabled state.
        Parameters:
        name - the name of the menu, if the form "File\tOpen" or "File\tQuit(999)". The tab character is used to separate the items in the menu hierarchy, and the optional bracketed value is used to control ordering in the menu.
        mnemonic - the mnemonic to assign to this menu - lowercase or uppercase letter, or (char)0 for no mnenonic
        documentrequired - whether this menu item should only be enabled if a document is loaded
        listener - the ActionListener to run when this menu item is activated
        Since:
        2.10.2
      • getMenu

        public javax.swing.JMenu getMenu​(java.lang.String name)
        Return the specified Menu. If the menu doesn't exist, it's created
        Parameters:
        name - the name of the Menu, before it's been localized
        Since:
        2.10.4
      • putNamedComponent

        public void putNamedComponent​(java.lang.String name,
                                      javax.swing.JComponent value)
        Add a named component to the viewers list
        Since:
        2.10.2
      • getNamedComponent

        public javax.swing.JComponent getNamedComponent​(java.lang.String name)
        Return a Component created by a ViewerFeature
      • getPreferredScrollableViewportSize

        public java.awt.Dimension getPreferredScrollableViewportSize()
        Returns JComponent.getPreferredSize(); for the Scrollable interface.
        Specified by:
        getPreferredScrollableViewportSize in interface javax.swing.Scrollable
      • getScrollableUnitIncrement

        public int getScrollableUnitIncrement​(java.awt.Rectangle visibleRect,
                                              int orientation,
                                              int direction)
        Returns 0; for the Scrollable interface.
        Specified by:
        getScrollableUnitIncrement in interface javax.swing.Scrollable
      • getScrollableBlockIncrement

        public int getScrollableBlockIncrement​(java.awt.Rectangle visibleRect,
                                               int orientation,
                                               int direction)
        Returns 0; for the Scrollable interface.
        Specified by:
        getScrollableBlockIncrement in interface javax.swing.Scrollable
      • getScrollableTracksViewportWidth

        public boolean getScrollableTracksViewportWidth()
        Returns true; for the Scrollable interface.
        Specified by:
        getScrollableTracksViewportWidth in interface javax.swing.Scrollable
      • getScrollableTracksViewportHeight

        public boolean getScrollableTracksViewportHeight()
        Returns true; for the Scrollable interface.
        Specified by:
        getScrollableTracksViewportHeight in interface javax.swing.Scrollable
      • loadPDF

        public void loadPDF​(java.io.File ffile)
        Load a PDF into the viewer from a file. This method will search the Importer objects in order until it finds one that matches the file, then will use that to load the PDF into the viewer. Prompting for passwords etc. is left to the appropriate Importer - see the PDFImporter class for details on the default behaviour.
        Parameters:
        ffile - the PDF file to load, or null to select it with a chooser
        Since:
        2.7.1
      • loadPDF

        public void loadPDF​(java.io.File file,
                            int pagenumber)
        Load a PDF into the viewer from a file. This method will search the Importer objects in order until it finds one that matches the file, then will use that to load the PDF into the viewer. Prompting for passwords etc. is left to the appropriate Importer - see the PDFImporter class for details on the default behaviour.
        Parameters:
        file - the PDF file to load, or null to select it with a chooser
        pagenumber - the initial page number to request. May be overridden
        Since:
        2.11.10
      • loadPDF

        @Deprecated
        public void loadPDF​(java.io.File file,
                            EncryptionHandler handler)
        Deprecated.
        this method has been superceded by the PDFImporter class
        Load a PDF into the viewer from a file using the specified EncryptionHandler. This method is now deprecated - the correct way to load a PDF with custom EncryptionHandlers is to modify the PDFImporter passed in to the PDF Constructor.
        Parameters:
        file - the PDF File
        handler - the EncryptionHandler to use
        Since:
        2.8
      • loadPDF

        @Deprecated
        public void loadPDF​(java.io.File file,
                            EncryptionHandler[] handlers)
        Deprecated.
        this method has been superceded by the PDFImporter class
        Load a PDF into the viewer from a file using the specified list of EncryptionHandler. This method is now deprecated - the correct way to load a PDF with custom EncryptionHandlers is to modify the PDFImporter passed in to the PDF Constructor.
        Parameters:
        file - the PDF File
        handlers - the list of EncryptionHandlers
        Since:
        2.8
      • loadPDF

        @Deprecated
        public void loadPDF​(java.io.InputStream in,
                            EncryptionHandler[] handlers,
                            java.lang.String title,
                            java.io.File file)
        Deprecated.
        this method has been superceded by the PDFImporter class

        Load a PDF into the viewer from an InputStream. Note that this method will return immediately, which means the calling thread must not close the InputStream. Doing so will result in an Exception. The stream will be closed by the reading thread when it is completed.

        This method is now deprecated - the correct way to load a PDF from an InputStream is to call the Importer.getImporter(PDFViewer, InputStream, String, File) method. For example:

         PDFImporter importer = viewer.getFeature(PDFImporter.class);
         importer.getImporter(viewer, inputstream, title, file).start(viewer, "Loading");
         
        Parameters:
        in - the InputStream to load the PDF from
        handlers - the EncryptionHandlers to use to try to decrypt the PDF
        title - The name of the Window. May be null.
        file - If using a save dialog, the initial value to set the dialog to. May be null.
        Since:
        2.8.3
      • loadPDF

        public void loadPDF​(java.net.URL url)
                     throws java.io.IOException
        Load a PDF into the viewer from a URL. If the URL contains a fragment which is a valid page number, that page will be selected on load.
        Parameters:
        url - the URL to load
        Throws:
        java.io.IOException
        Since:
        2.14
        See Also:
        PDFImporter
      • loadPDF

        public void loadPDF​(PDF pdf,
                            java.lang.String name)
        Load a pre-loaded PDF into the viewer. Simply calls loadPDF(new PDFParser(pdf), name).
        Parameters:
        pdf - the PDF to load
        name - the name of the PDF, to display in the title bar.
        Since:
        2.7.1
      • loadPDF

        public void loadPDF​(PDFParser parser,
                            java.lang.String name)
        Load a pre-loaded PDF into the viewer.
        Parameters:
        parser - the PDFParser referencing the PDF to load
        name - the name of the PDF, to display in the title bar.
        Since:
        2.11.3
      • loadPDF

        public void loadPDF​(PDFParser parser,
                            java.lang.String name,
                            int pagenumber)
        Load a pre-loaded PDF into the viewer.
        Parameters:
        parser - the PDFParser referencing the PDF to load
        name - the name of the PDF, to display in the title bar.
        pagenumber - the initial page to display
        Since:
        2.11.3
      • loadPDF

        public void loadPDF​(PDFParser parser,
                            java.lang.String name,
                            int pagenumber,
                            java.io.File file,
                            boolean addtomostrecent,
                            DocumentPanelListener listener)
        Load a pre-loaded PDF into the viewer.
        Parameters:
        parser - the PDFParser referencing the PDF to load
        name - the name of the PDF, to display in the title bar
        pagenumber - the initial page to display
        file - the file to pass to DocumentPanel.setAssociatedFile(java.io.File, boolean). May be null.
        addtomostrecent - whether to add the File containing the PDF to the list of recently opened files
        listener - an optional callback object. If specified, this listener will be called with a "created" DocumentPanelEvent specifying the DocumentPanel created by this method. The listener will not be added to the PDFViewer's list, and the event will not be fired in the normal way to those listener. This approach can be used to run a one-off action on the panel immediately when it's created, without needing to add listeners and wait for the event to be fired.
        Since:
        2.18.1
      • removeNotify

        public void removeNotify()
        Overrides:
        removeNotify in class javax.swing.JComponent
      • isClosing

        public boolean isClosing()
        Return true if the close() method has been called on the PDFViewer
      • close

        public void close()
        Close the PDFViewer. Should be called before this PDFViewer is permanently removed from the Swing object hierarchy.
        Since:
        2.11.18
      • newPDFViewer

        public static PDFViewer newPDFViewer()
        Create a new PDFViewer object in a frame of it's own. Top level routine to be called by main()
        Since:
        2.7..1
      • newPDFViewer

        public static PDFViewer newPDFViewer​(java.util.Collection<ViewerFeature> features)
        Create a new PDFViewer object in a frame of its own with the specified features.
        Parameters:
        features - a Collection of ViewerFeature objects that are to be supported
        Since:
        2.7.9
        See Also:
        ViewerFeature
      • main

        public static void main​(java.lang.String[] args)
        The main() method can be invoked to run this class from the command line. A single argument specifying the name of the file to open is optional
      • setCurrentUser

        public void setCurrentUser​(java.lang.String user)
        Set the name of the current user (for Annotations). The default is null. Can also be set by the currentUser initialization parameter
        Since:
        2.11.18
      • setUnpromptedDirtyClose

        public void setUnpromptedDirtyClose​(boolean ignore)
        Set whether to allow a window containing a modified PDF to be closed without prompting. Can also be set by the unpromptedDirtyClose initialization parameter
        Since:
        2.11.19
      • getMinZoom

        public int getMinZoom()
        Returns the minimum zoom level that should be used.
        Since:
        2.18
      • getMaxZoom

        public int getMaxZoom()
        Returns the maximum zoom level that should be used.
        Since:
        2.18
      • setZoomRange

        public void setZoomRange​(int min,
                                 int max)
        Set the minumum and maximum zoom values. Requires 1 <= min <= max <= 9999.
        Parameters:
        min - the minimum zoom level - the default is 1
        max - the minimum zoom level - the default is 9999
        Since:
        2.18
      • getZoomIntervals

        public int[] getZoomIntervals()
        Returns the zoom intervals that should be used to increase or decrease zoom level.
        Since:
        2.18
      • setZoomIntervals

        public void setZoomIntervals​(int[] intervals)
        Set the list of zoom intervals that should be used to increase or decrease zoom level. The list must be >= 1 item long, in ascending order, and all values must fall between min and max as set by setZoomRange(int, int)
        Parameters:
        intervals - the list of zoom intervals
        Since:
        2.18