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/12 08:54:16 UTC

svn commit: r1893268 - in /pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger: PDFDebugger.java ui/FileOpenSaveDialog.java

Author: tilman
Date: Sun Sep 12 08:54:16 2021
New Revision: 1893268

URL: http://svn.apache.org/viewvc?rev=1893268&view=rev
Log:
PDFBOX-2941: improve "Save as..." menu item implementation

Modified:
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java

Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1893268&r1=1893267&r2=1893268&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Sun Sep 12 08:54:16 2021
@@ -669,20 +669,28 @@ public class PDFDebugger extends JFrame
         exitMenuItemActionPerformed(null);
     }
 
-    //TODO needs to be expanded like openMenuItemActionPerformed
-    // (FileOpenSaveDialog also needs to be expanded to have a method that saves a PDDocumennt)
     private void saveAsMenuItemActionPerformed(ActionEvent evt)
     {
         try
         {
-            FileDialog openDialog = new FileDialog(this, "Save", FileDialog.SAVE);
-            openDialog.setFilenameFilter((dir, name) -> name.toLowerCase().endsWith(".pdf"));
-            openDialog.setVisible(true);
-            String file = openDialog.getFile();
-            if (file != null)
+            if (IS_MAC_OS)
             {
-                document.setAllSecurityToBeRemoved(true);
-                document.save(file);
+                FileDialog openDialog = new FileDialog(this, "Save", FileDialog.SAVE);
+                openDialog.setFilenameFilter((dir, name) -> 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.saveFile(bytes, OS_NAME), OS_NAME)
             }
         }
         catch (IOException e)

Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java?rev=1893268&r1=1893267&r2=1893268&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/FileOpenSaveDialog.java Sun Sep 12 08:54:16 2021
@@ -24,6 +24,7 @@ import java.awt.Component;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import org.apache.pdfbox.pdmodel.PDDocument;
 
 /**
  * @author Khyrul Bashar
@@ -93,6 +94,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 = fileChooser.showSaveDialog(mainUI);
+        if (result == JFileChooser.APPROVE_OPTION)
+        {
+            String filename = fileChooser.getSelectedFile().getAbsolutePath();
+            if (!filename.endsWith(extension))
+            {
+                filename += "." + extension;
+            }
+            document.setAllSecurityToBeRemoved(true);
+            document.save(filename);
+            return true;
+        }
+        return false;
     }
 
     /**