⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdfviewer.java

📁 Java生成PDF Java生成PDF Java生成PDF
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                    } catch (Exception e) { }                    addDocumentPanel(pdf, name==null ? pdf.getInfo("Title") : name, file);                }            });        }    }    /**     * Add a new Document Frame containing the specified PDF. If we're using the     * MultiWindow feature then this is done in a JInternalFrame inserted into     * the desktop. If not, we just update the activedocument with the new     * PDF.     */    private void addDocumentPanel(PDF pdf, String name, File file) {        if (hasFeature(MultiWindow.getInstance())) {            final DocumentPanel documentpanel = new DocumentPanel();            documentpanel.putClientProperty("file", file);            for (Iterator i = listeners.iterator();i.hasNext();) {                documentpanel.addDocumentPanelListener((DocumentPanelListener)i.next());            }            documentpanel.setViewer(this);            documentpanel.raiseDocumentPanelEvent(DocumentPanelEvent.createCreated(documentpanel));            for (Iterator i = features.iterator();i.hasNext();) {                ViewerFeature feature = (ViewerFeature)i.next();                if (feature instanceof SidePanelFactory) {                    documentpanel.addSidePanelFactory((SidePanelFactory)feature);                } else if (feature instanceof AnnotationComponentFactory) {                    documentpanel.addAnnotationComponentFactory((AnnotationComponentFactory)feature);                } else if (feature instanceof ActionHandler) {                    documentpanel.addActionHandler((ActionHandler)feature);                }            }            final JInternalFrame frame = new JInternalFrame(name, true, true, true, true);            frame.setContentPane(documentpanel);            frame.setFrameIcon(BFO16);            frame.setFocusable(false);            frame.addInternalFrameListener(new InternalFrameListener() {                private void activeWindowChanged() {                    activeWindow = desktop.getSelectedFrame();                    if (activeWindow!=null && activeWindow.isIcon()) activeWindow = null;                    if (activedocument!=null) {                        activedocument.raiseDocumentPanelEvent(DocumentPanelEvent.createDeactivated(activedocument));                    }                    activedocument = activeWindow!=null ? (DocumentPanel)activeWindow.getContentPane() : null;                    if (activedocument!=null && activedocument.getPDF()!=null) {                        activedocument.raiseDocumentPanelEvent(DocumentPanelEvent.createActivated(activedocument));                    }                }                public void internalFrameClosing(InternalFrameEvent e) {                    documentpanel.setPDF(null);                    frame.dispose();                    desktop.remove(frame);                    activeWindowChanged();                }                public void internalFrameActivated(InternalFrameEvent e) { activeWindowChanged(); }                public void internalFrameDeactivated(InternalFrameEvent e) { activeWindowChanged(); }                public void internalFrameDeiconified(InternalFrameEvent e) { activeWindowChanged(); }                public void internalFrameIconified(InternalFrameEvent e) { activeWindowChanged(); }                public void internalFrameOpened(InternalFrameEvent e) { }                public void internalFrameClosed(InternalFrameEvent e) { }            });            frame.setBounds(internalFrameCounter*30, internalFrameCounter*20, MINIMIZEDWIDTH, MINIMIZEDHEIGHT);            internalFrameCounter = (internalFrameCounter+1) % 10;            try {   // Minimise other frames                JInternalFrame[] fs = desktop.getAllFrames();                for (int i=0;i<fs.length;i++) fs[i].setMaximum(false);                desktop.add(frame);                frame.show();                frame.setMaximum(true);            } catch (PropertyVetoException e) { }            documentpanel.setPDF(pdf);        } else {            activedocument.putClientProperty("file", file);            activedocument.setPDF(pdf);            for (Iterator i = pdfcomponents.iterator();i.hasNext();) {                JComponent comp = (JComponent)i.next();                comp.setEnabled(true);            }        }    }    /**     * Return the active {@link DocumentPanel}     */    public DocumentPanel getActiveDocumentPanel() {        return activedocument;    }    /**     * Return all the {@link DocumentPanel}s in the viewer     * @since 2.8.5     */    public DocumentPanel[] getDocumentPanels() {        if (hasFeature(MultiWindow.getInstance())) {            JInternalFrame[] fs = desktop.getAllFrames();            DocumentPanel[] panels = new DocumentPanel[fs.length];            for (int i=0;i<fs.length;i++) {                try {                    panels[i] = (DocumentPanel)(fs[i].getContentPane());                } catch (ClassCastException e) {                    DocumentPanel[] t = new DocumentPanel[panels.length-1];                    System.arraycopy(panels, 0, t, 0, i);                    panels = t;                }            }            return panels;        } else {            return new DocumentPanel[] { activedocument };        }    }    /**     * Close the active {@link DocumentPanel}     */    public void closeActiveDocumentPanel() {        if (hasFeature(MultiWindow.getInstance()) && activeWindow!=null) {            activeWindow.doDefaultCloseAction();        } else {            activedocument.setPDF(null);            activedocument.raiseDocumentPanelEvent(DocumentPanelEvent.createDeactivated(activedocument));            for (Iterator i = pdfcomponents.iterator();i.hasNext();) {                JComponent comp = (JComponent)i.next();                comp.setEnabled(false);            }        }    }    /**     * Add a {@link DocumentPanelListener} to any {@link DocumentPanel} objects     * created by this PDFViewer.     */    public void addDocumentPanelListener(DocumentPanelListener listener) {        listeners.add(listener);        if (desktop!=null) {            JInternalFrame[] fs = desktop.getAllFrames();            for (int i=0;i<fs.length;i++) {                try {                    DocumentPanel panel = (DocumentPanel)(fs[i].getContentPane());                    panel.addDocumentPanelListener(listener);                } catch (ClassCastException e) {}            }        } else if (activedocument!=null) {            activedocument.addDocumentPanelListener(listener);        }    }    /**     * Add a {@link DocumentPanelListener} to any {@link DocumentPanel} objects     * created by this PDFViewer.     */    public void removeDocumentPanelListener(DocumentPanelListener listener) {        listeners.remove(listener);        if (desktop!=null) {            JInternalFrame[] fs = desktop.getAllFrames();            for (int i=0;i<fs.length;i++) {                try {                    DocumentPanel panel = (DocumentPanel)(fs[i].getContentPane());                    panel.removeDocumentPanelListener(listener);                } catch (ClassCastException e) {}            }        } else if (activedocument!=null) {            activedocument.removeDocumentPanelListener(listener);        }    }    //----------------------------------------------------------------------------------    private void cascadeFrames() {        JInternalFrame[] frames = desktop.getAllFrames();        if (frames.length != 0) {            Rectangle dBounds = desktop.getBounds();            int margin = 0;            Insets ins = null;            Dimension d, cd;            for (int i=0; i<frames.length; i++) {                d = frames[i].getSize();                cd = frames[i].getContentPane().getSize();                margin += Math.max(d.width - cd.width, d.height - cd.height);            }                     int width = dBounds.width - margin;            int height = dBounds.height - margin;            int offset = 0;            for (int i=0;i<frames.length;i++) {                frames[i].setBounds(dBounds.x + offset, dBounds.y + offset, width, height);                d = frames[i].getSize();                cd = frames[i].getContentPane().getSize();                offset += Math.max(d.width - cd.width, d.height - cd.height);            }        }    }    //----------------------------------------------------------------------------------    /**     * Create a new PDFViewer object in a frame of it's own. Top level routine     * to be called by main()     * @since 2.7..1     */    public static PDFViewer newPDFViewer() {        ArrayList f = new ArrayList(ViewerFeature.getAllFeatures());//        f.remove(MultiWindow.getInstance());        return newPDFViewer(f);    }    /**     * Create a new PDFViewer object in a frame of it's own with the specified features.     * @param features a Collection of {@link ViewerFeature} objects that are to be supported     * @see ViewerFeature     * @since 2.7.9     */    public static PDFViewer newPDFViewer(Collection features) {        JFrame bfoFrame = new JFrame("BFO");        bfoFrame.setIconImage(BFO16.getImage());        PDFViewer pdfViewer = new PDFViewer(features);        bfoFrame.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });        bfoFrame.setContentPane(pdfViewer);        bfoFrame.pack();        // position window in the centre of the screen        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();        Dimension windowSize = bfoFrame.getSize();        bfoFrame.setLocation(Math.max(0, (screenSize.width - windowSize.width) / 2), Math.max(0, (screenSize.height - windowSize.height) / 2));        bfoFrame.setVisible(true);        return pdfViewer;    }    /**     * 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     */    public static void main(final String args[]) {        File file = null;        if (args.length > 0) {            try {                if (args.length > 3 || args[0].equals("-help")) {                    System.err.println("Usage: java org.faceless.pdf2.viewer2.PDFViewer [<file>]");                    return;                } else {                    // load PDF                    if (args.length == 1 || args.length == 3) {                        String filename = args[args.length-1];                        file = new File(filename);                        if (!file.isFile() || !file.canRead()) {                             System.err.println("PDFViewer: Unable to read \""+filename+"\"");                             file = null;                        }                    }                    if (args[0].equals("-license")) {                        PDF.setLicenseKey(args[1]);                    }                }            } catch (Exception e) {                System.err.println("Usage: java org.faceless.pdf2.viewer2.PDFViewer [<file>]");                return;            }        }        try {            String laf = UIManager.getSystemLookAndFeelClassName();            if (!"com.sun.java.swing.plaf.gtk.GTKLookAndFeel".equals(laf)) {                UIManager.setLookAndFeel(laf);            }        } catch (Exception e) {         }        final File ffile = file;        SwingUtilities.invokeLater(new Runnable() {            public void run() {                PDFViewer viewer = newPDFViewer();                if (ffile != null) viewer.loadPDF(ffile);            }        });    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -