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

📄 pdfviewer.java

📁 Java生成PDF Java生成PDF Java生成PDF
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                x += 20;                y += 20;            }            if (selectedFrame != null) {                desktop.setSelectedFrame(selectedFrame);            }        } catch(java.beans.PropertyVetoException e) { }    }    private class PDFDocumentFrame extends JInternalFrame implements PDFViewport.ViewportObserver {        private javax.swing.JFormattedTextField tfPages;        private javax.swing.JSplitPane splitPane;        private javax.swing.JTabbedPane tabbedPane;        private javax.swing.JPanel navigatePanel;        private javax.swing.JButton btnMoveFirst;        private javax.swing.JButton btnMoveLast;        private javax.swing.JButton btnMoveLeft;        private javax.swing.JButton btnMoveRight;        private PDFScrollPane pdfPanel;        private PDFViewport pdfViewport;        private OutlinePanel pdfOutlinePanel;        private ThumbsPanel pdfThumbsPanel;        private PDF document;        private int currentPage;        private JScrollBar verticalSB, horizontalSB;        PDFDocumentFrame() {            super("", true, true, true, true);            currentPage = 0;            setBackground(Color.gray);            pdfPanel = new PDFScrollPane();            pdfViewport = pdfPanel.getViewport();            // Add some Rendering Hints - maybe they'll help?            RenderingHints hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);            hints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);            hints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);            hints.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);            pdfViewport.setRenderingHints(hints);            // add navigation panel            navigatePanel = new javax.swing.JPanel();            navigatePanel.setBorder(BorderFactory.createEtchedBorder());            btnMoveFirst = new javax.swing.JButton("| <");            btnMoveLeft = new javax.swing.JButton("<");            btnMoveRight = new javax.swing.JButton(">");            btnMoveLast = new javax.swing.JButton("> |");            // add tabbed pane            tabbedPane = new JTabbedPane(JTabbedPane.LEFT);            // add document outline view            pdfOutlinePanel = new OutlinePanel(pdfViewport);            pdfOutlinePanel.setOpaque(true);            tabbedPane.addTab("Bookmarks", null, pdfOutlinePanel, "Bookmarks");            // add document thumbnail view            pdfThumbsPanel = new ThumbsPanel(pdfViewport);            tabbedPane.addTab("Pages", null, pdfThumbsPanel, "Pages");            tabbedPane.addChangeListener(new ChangeListener() {                // This method is called whenever the selected tab changes                public void stateChanged(ChangeEvent evt) {                    JTabbedPane pane = (JTabbedPane) evt.getSource();                    // Get current tab                    if (pane.getSelectedIndex() == 1) {                        pdfThumbsPanel.setDocument(document);                    }                }            });            tabbedPane.setSelectedIndex(0);            // add split pane            splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, tabbedPane, pdfPanel);            splitPane.setOneTouchExpandable(true);            splitPane.setDividerLocation(0);            splitPane.setDividerSize(10);            splitPane.setResizeWeight(0);            getContentPane().add(splitPane, BorderLayout.CENTER);            // add page buttons            btnMoveFirst.addActionListener(new java.awt.event.ActionListener() {                public void actionPerformed(java.awt.event.ActionEvent evt) {                    currentPage = 0;                    pdfViewport.setPageNumber(currentPage);                }            });            navigatePanel.add(btnMoveFirst);            btnMoveLeft.addActionListener(new java.awt.event.ActionListener() {                public void actionPerformed(java.awt.event.ActionEvent evt) {                    currentPage--;                    pdfViewport.setPageNumber(currentPage);                }            });            navigatePanel.add(btnMoveLeft);            tfPages = new javax.swing.JFormattedTextField();            tfPages.setPreferredSize(new Dimension(70, 21));            tfPages.setHorizontalAlignment(JTextField.CENTER);            tfPages.setEditable(true);            tfPages.addKeyListener(new KeyAdapter() {                public void keyPressed(KeyEvent e) {                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {                        try {                            String s = tfPages.getText();                            if (s.indexOf("of")>0) {                                s = s.substring(0, s.indexOf("of")-1);                            }                            s = s.trim();                            int pgnum = Integer.parseInt(s) - 1;                            if (pgnum<0 || pgnum >= document.getNumberOfPages() || pgnum==currentPage) {                                throw new RuntimeException();                            }                            currentPage = pgnum;                            pdfViewport.setPageNumber(currentPage);                        } catch (Exception x) {                            tfPages.setText((currentPage+1) + " of " + document.getNumberOfPages());                        }                    }                }            });            tfPages.addFocusListener(new FocusAdapter() {                public void focusGained(FocusEvent e) {                    tfPages.selectAll();                }            });            navigatePanel.add(tfPages);            btnMoveRight.addActionListener(new java.awt.event.ActionListener() {                public void actionPerformed(java.awt.event.ActionEvent evt) {                    currentPage++;                    pdfViewport.setPageNumber(currentPage);                }            });            navigatePanel.add(btnMoveRight);            btnMoveLast.addActionListener(new java.awt.event.ActionListener() {                public void actionPerformed(java.awt.event.ActionEvent evt) {                    currentPage = document.getNumberOfPages() - 1;                    pdfViewport.setPageNumber(currentPage);                }            });            navigatePanel.add(btnMoveLast);            navigatePanel.setVisible(false);            getContentPane().add(navigatePanel, BorderLayout.SOUTH);            setTitle("BFO - [" + title + "]");            splitPane.setVisible(true);            navigatePanel.setVisible(true);            // add observers            pdfViewport.addObserver(pdfThumbsPanel);            pdfViewport.addObserver(this);        }        /**         * Set the PDF for this frame         */        void setDocument(PDF pdf) {//          add document to view            this.document = pdf;            pdfViewport.setDocument(document);            pdfOutlinePanel.setDocument(document);        }        /**         * Set the viewing percentage for this frame         */        void setPercent(String p) {            if (p.indexOf("%")<0) {                p = p+"%";            }            if (document!=null) {                if (p.indexOf("%")>=0) {                    p = p.substring(0, p.lastIndexOf("%"));                }                p = p.trim();                try {                    float dpi = Float.parseFloat(p) * 0.72f;                    pdfViewport.setDPI(dpi);                } catch (Exception e) { }            }        }        public String getPercent() {            return ((int)Math.round(pdfViewport.getDPI() / 72 * 100))+"%";        }        public void print() {            if (document != null) pdfViewport.print();        }        public PDFViewport getViewPort() {            return pdfViewport;        }        /* (non-Javadoc)         * @see org.faceless.pdf2.viewer.PDFViewportObserver#viewportChanged(double, double)         */        public void viewportChanged(double x, double y) {            if (document != null) {                currentPage = pdfViewport.getPageNumber();                btnMoveRight.setEnabled(currentPage != document.getNumberOfPages()-1);                btnMoveLast.setEnabled(currentPage != document.getNumberOfPages()-1);                btnMoveLeft.setEnabled(currentPage!=0);                btnMoveFirst.setEnabled(currentPage!=0);                tfPages.setText((currentPage+1) + " of " + document.getNumberOfPages());                cboZoom.setSelectedItem(getPercent());            }        }        class FrameListener extends InternalFrameAdapter {            public void internalFrameClosing(InternalFrameEvent e) {                dispose();                desktop.remove(e.getInternalFrame());                frameCounter = (frameCounter-1) % 10;                activeFrameChanged();            }            public void internalFrameActivated(InternalFrameEvent e) {                activeFrameChanged();            }        }        /* (non-Javadoc)         * @see org.faceless.pdf2.viewer.PDFViewport.ViewportObserver#writeAsTIFFComplete()         */        public void writeAsTIFFComplete() {            JOptionPane.showMessageDialog(this, "TIFF created successfully", "PDF to TIFF", JOptionPane.INFORMATION_MESSAGE);        }    }    /**     * 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() {        JFrame bfoFrame = new JFrame("BFO");        bfoFrame.setIconImage(BFO16.getImage());        PDFViewer pdfViewer = new PDFViewer(bfoFrame);        bfoFrame.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });        bfoFrame.getContentPane().add("Center", 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.viewer.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.viewer.PDFViewer [<file>]");                return;            }        }        final File ffile = file;        //Schedule a job for the event-dispatching thread:        //creating and showing this application's GUI.        javax.swing.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 + -