save.java

来自「Java生成PDF Java生成PDF Java生成PDF」· Java 代码 · 共 98 行

JAVA
98
字号
// $Id: Save.java,v 1.14 2007/11/14 07:29:20 mike Exp $package org.faceless.pdf2.viewer2.feature;import org.faceless.pdf2.viewer2.*;import org.faceless.pdf2.*;import javax.swing.*;import javax.swing.*;import java.awt.*;import java.util.Timer;import java.util.*;import javax.swing.filechooser.FileFilter;import java.io.*;/** * Create a button that will open a dialog allowing the PDF to be saved to disk. * The name of this feature is "Save". * <p><i>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.</i></p> * @since 2.8 */public class Save extends ViewerWidget implements DocumentPanelListener{    public Save() {        super("Save");        setButton("Document", "resources/icons/disk.png", "tt.Save");        setMenu("File\tSave");    }    public void initialize(PDFViewer viewer) {        super.initialize(viewer);        viewer.addDocumentPanelListener(this);    }    public void documentUpdated(DocumentPanelEvent event) {        if (event.getType()=="activated") {            EncryptionHandler handler = event.getDocumentPanel().getPDF().getEncryptionHandler();            boolean enabled = handler==null || handler.hasRight("Save");            event.getDocumentPanel().getViewer().getNamedComponent("ButtonSave").setEnabled(enabled);            event.getDocumentPanel().getViewer().getNamedComponent("MenuSave").setEnabled(enabled);        }    }    public void action(final ViewerEvent event) {        final DocumentPanel panel = event.getDocumentPanel();        File file = (File)panel.getClientProperty("file");        JFileChooser chooser = new JFileChooser(file);        chooser.setFileFilter(new FileFilter() {            public boolean accept(File f) {                return f.isDirectory() || f.getName().toLowerCase().endsWith(".pdf");            }            public String getDescription() {                return "PDF files (*.pdf)";            }        });        chooser.setSelectedFile(file);        int returnVal = chooser.showSaveDialog(event.getViewer());         if (returnVal == JFileChooser.APPROVE_OPTION) {            final File ffile = chooser.getSelectedFile();            final JDialog dialog = new JDialog(JOptionPane.getFrameForComponent(event.getViewer()));            dialog.setModal(true);            final JProgressBar progress = new JProgressBar(0, 100);            JPanel content = new JPanel(new BorderLayout(10,0));            content.setBorder(new javax.swing.border.EmptyBorder(10,10,10,10));            dialog.setContentPane(content);            dialog.getContentPane().add(new JLabel(SuperJOptionPane.getLocalizedString("Saving")), BorderLayout.WEST);            dialog.getContentPane().add(progress, BorderLayout.CENTER);            dialog.setUndecorated(true);            dialog.setResizable(false);            dialog.pack();            dialog.setLocationRelativeTo(event.getViewer());            final Timer timer = new Timer();            timer.schedule(new TimerTask() {                public void run() {                    progress.setValue((int)(event.getPDF().getRenderProgress()*100));                }            }, 100, 100);            new Thread () {                public void run() {                    try {                        panel.getJSManager().runEventDocWillSave(panel);                        event.getPDF().render(new FileOutputStream(ffile));                        timer.cancel();                        dialog.dispose();                        panel.getJSManager().runEventDocDidSave(panel);                    } catch (Exception e) {                        timer.cancel();                        dialog.dispose();                        SuperJOptionPane.displayThrowable("as TIFF", e, event.getViewer());                    }                }            }.start();            dialog.setVisible(true);        }    }}

⌨️ 快捷键说明

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