You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2020/12/28 15:57:48 UTC

svn commit: r1884881 - /pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java

Author: msahyoun
Date: Mon Dec 28 15:57:47 2020
New Revision: 1884881

URL: http://svn.apache.org/viewvc?rev=1884881&view=rev
Log:
PDFBOX-2602: handle option for viewstucture

Modified:
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.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=1884881&r1=1884880&r2=1884881&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 Mon Dec 28 15:57:47 2020
@@ -142,7 +142,7 @@ import picocli.CommandLine.Parameters;
  */
 @SuppressWarnings({ "serial", "squid:MaximumInheritanceDepth", "squid:S1948" })
 @Command(name = "pdfdebugger", description = "Analyzes and inspects the internal structure of a PDF document")
-public class PDFDebugger extends JFrame implements Callable<Integer> {
+public class PDFDebugger extends JFrame {
     private static final Set<COSName> SPECIALCOLORSPACES = new HashSet<>(
             Arrays.asList(COSName.INDEXED, COSName.SEPARATION, COSName.DEVICEN));
 
@@ -157,7 +157,6 @@ public class PDFDebugger extends JFrame
     private TreeStatusPane statusPane;
     private RecentFiles recentFiles;
     private WindowPrefs windowPrefs;
-    private boolean isPageMode;
     private PDDocument document;
     private String currentFilePath;
     private JScrollPane jScrollPaneRight;
@@ -182,6 +181,7 @@ public class PDFDebugger extends JFrame
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSERR = System.err;
+    private static final PrintStream SYSOUT = System.out;
 
     @Option(names = { "-h", "--help" }, usageHelp = true, description = "display this help message")
     boolean usageHelpRequested;
@@ -190,7 +190,7 @@ public class PDFDebugger extends JFrame
     private String password;
 
     @Option(names = "-viewstructure", description = "activate structure mode on startup")
-    private boolean viewstructure;
+    private boolean viewstructure = false;
 
     @Parameters(paramLabel = "inputfile", arity="0..1", description = "the PDF file to be loaded")
     private File infile;
@@ -202,7 +202,8 @@ public class PDFDebugger extends JFrame
      * Constructor.
      */
     public PDFDebugger() {
-        this(false);
+        loadConfiguration();
+        initComponents();
     }
 
     /**
@@ -212,7 +213,7 @@ public class PDFDebugger extends JFrame
      *                   structure is to be displayed.
      */
     public PDFDebugger(boolean isPageMode) {
-        this.isPageMode = isPageMode;
+        this.viewstructure = !isPageMode;
         loadConfiguration();
         initComponents();
     }
@@ -235,21 +236,19 @@ public class PDFDebugger extends JFrame
         Thread.setDefaultUncaughtExceptionHandler(
                 (thread, throwable) -> new ErrorDialog(throwable).setVisible(true));
 
-        int exitCode = new CommandLine(new PDFDebugger()).execute(args);
-        if (exitCode > 0) System.exit(exitCode);
-    }
-
-    public Integer call()
-    {
-        boolean viewPages = true;
-        if (viewstructure)
-        {
-            viewPages = false;
-        }
 
         try
         {
-            final PDFDebugger viewer = new PDFDebugger(viewPages);
+            CommandLine commandLine  = new CommandLine(PDFDebugger.class);
+            commandLine.parseArgs(args);
+            PDFDebugger viewer = commandLine.getCommand();
+            
+            if (viewer.usageHelpRequested)
+            {
+                commandLine.usage(SYSOUT);
+                System.exit(0);
+            }
+
 
             // use our custom logger
             // this works only if there is no "LogFactory.getLog()" in this class,
@@ -271,28 +270,29 @@ public class PDFDebugger extends JFrame
                 FilterFactory.INSTANCE.getFilter(COSName.FLATE_DECODE);
             }
 
-            if (infile != null && infile.exists())
+            if (viewer.infile != null && viewer.infile.exists())
             {
-                viewer.readPDFFile(infile, password);
+                viewer.readPDFFile(viewer.infile, viewer.password);
             }
+
+            viewer.setPageMode(true);
             viewer.setVisible(true);
         }
         catch (Exception ex)
         {
             SYSERR.println( "Error viewing document: " + ex.getMessage());
-            return 4;
+            System.exit(4);
         }
-        return 0;
     }
 
     public boolean isPageMode()
     {
-        return this.isPageMode;
+        return this.viewstructure ? false : true;
     }
     
     public void setPageMode(boolean isPageMode)
     {
-        this.isPageMode = isPageMode;
+        this.viewstructure = isPageMode ? false : true;
     }
     
     public boolean hasDocument()
@@ -1299,7 +1299,7 @@ public class PDFDebugger extends JFrame
         TreeStatus treeStatus = new TreeStatus(document.getDocument().getTrailer());
         statusPane.updateTreeStatus(treeStatus);
         
-        if (isPageMode)
+        if (!viewstructure)
         {
             File file = new File(currentFilePath);
             DocumentEntry documentEntry = new DocumentEntry(document, file.getName());