You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2021/09/22 18:37:57 UTC
svn commit: r1893518 - in
/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger:
PDFDebugger.java ui/FileOpenSaveDialog.java
Author: tilman
Date: Wed Sep 22 18:37:57 2021
New Revision: 1893518
URL: http://svn.apache.org/viewvc?rev=1893518&view=rev
Log:
PDFBOX-2941: add "Save as..." menu item and implementation
Modified:
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java
Modified: pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1893518&r1=1893517&r2=1893518&view=diff
==============================================================================
--- pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Wed Sep 22 18:37:57 2021
@@ -168,7 +168,6 @@ public class PDFDebugger extends JFrame
// file menu
private JMenuItem saveAsMenuItem;
- private JMenuItem saveMenuItem;
private JMenu recentFilesMenu;
private JMenuItem printMenuItem;
private JMenu printDpiMenu;
@@ -418,6 +417,18 @@ public class PDFDebugger extends JFrame
addRecentFileItems();
fileMenu.add(recentFilesMenu);
+ saveAsMenuItem = new JMenuItem("Save as...");
+ saveAsMenuItem.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent evt)
+ {
+ saveAsMenuItemActionPerformed(evt);
+ }
+ });
+ saveAsMenuItem.setEnabled(false);
+ fileMenu.add(saveAsMenuItem);
+
printMenuItem = new JMenuItem("Print");
printMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, SHORCUT_KEY_MASK));
printMenuItem.setEnabled(false);
@@ -642,6 +653,43 @@ public class PDFDebugger extends JFrame
exitMenuItemActionPerformed(null);
}
+ private void saveAsMenuItemActionPerformed(ActionEvent evt)
+ {
+ try
+ {
+ if (IS_MAC_OS)
+ {
+ FileDialog openDialog = new FileDialog(this, "Save", FileDialog.SAVE);
+ openDialog.setFilenameFilter(new FilenameFilter()
+ {
+ @Override
+ public boolean accept(File dir, String name)
+ {
+ return name.toLowerCase().endsWith(".pdf");
+ }
+ });
+ openDialog.setVisible(true);
+ String file = openDialog.getFile();
+ if (file != null)
+ {
+ document.setAllSecurityToBeRemoved(true);
+ document.save(file);
+ }
+ }
+ else
+ {
+ String[] extensions = new String[] { "pdf", "PDF" };
+ FileFilter pdfFilter = new ExtensionFileFilter(extensions, "PDF Files (*.pdf)");
+ FileOpenSaveDialog saveAsDialog = new FileOpenSaveDialog(this, pdfFilter);
+ saveAsDialog.saveDocument(document, "pdf");
+ }
+ }
+ catch (IOException e)
+ {
+ new ErrorDialog(e).setVisible(true);
+ }
+ }
+
private void openMenuItemActionPerformed(ActionEvent evt)
{
try
@@ -1306,6 +1354,7 @@ public class PDFDebugger extends JFrame
printMenuItem.setEnabled(true);
printDpiMenu.setEnabled(true);
reopenMenuItem.setEnabled(true);
+ saveAsMenuItem.setEnabled(true);
initTree();
@@ -1344,6 +1393,7 @@ public class PDFDebugger extends JFrame
document = documentOpener.parse();
printMenuItem.setEnabled(true);
reopenMenuItem.setEnabled(true);
+ saveAsMenuItem.setEnabled(true);
initTree();
Modified: pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java?rev=1893518&r1=1893517&r2=1893518&view=diff
==============================================================================
--- pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java (original)
+++ pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java Wed Sep 22 18:37:57 2021
@@ -24,6 +24,7 @@ import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
+import org.apache.pdfbox.pdmodel.PDDocument;
/**
* @author Khyrul Bashar
@@ -102,6 +103,31 @@ public class FileOpenSaveDialog
return true;
}
return false;
+ }
+
+ /**
+ * Saves document into a .pdf file after the user is prompted to choose the destination.
+ *
+ * @param document document to be saved in a .pdf file.
+ * @param extension file extension.
+ * @return true if the file is saved successfully or false if failed.
+ * @throws IOException if there is an error in creation of the file.
+ */
+ public boolean saveDocument(PDDocument document, String extension) throws IOException
+ {
+ int result = FILE_CHOOSER.showSaveDialog(mainUI);
+ if (result == JFileChooser.APPROVE_OPTION)
+ {
+ String filename = FILE_CHOOSER.getSelectedFile().getAbsolutePath();
+ if (!filename.endsWith(extension))
+ {
+ filename += "." + extension;
+ }
+ document.setAllSecurityToBeRemoved(true);
+ document.save(filename);
+ return true;
+ }
+ return false;
}
/**