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;
}
/**