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/26 17:39:17 UTC

svn commit: r1884825 - /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/

Author: msahyoun
Date: Sat Dec 26 17:39:16 2020
New Revision: 1884825

URL: http://svn.apache.org/viewvc?rev=1884825&view=rev
Log:
PDFBOX-2602: add version help

Modified:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Decrypt.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Encrypt.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportFDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportXFDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImageToPDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportFDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportXFDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/OverlayPDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFBox.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFMerger.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFSplit.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Decrypt.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Decrypt.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Decrypt.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Decrypt.java Sat Dec 26 17:39:16 2020
@@ -38,7 +38,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author  Ben Litchfield
  */
-@Command(name = "Decrypt", description = "Decrypts a PDF file.")
+@Command(name = "Decrypt", description = "Decrypts a PDF file.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class Decrypt implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
@@ -48,9 +48,6 @@ public final class Decrypt implements Ca
     @Option(names = "-alias", description = "the alias to the certificate in the keystore.")
     private String alias;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-keyStore", description = "the path to the keystore that holds the certificate to decrypt the document. " + 
         "This is only required if the document is encrypted with a certificate, otherwise only the password is required.")
     private String keyStore;

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Encrypt.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Encrypt.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Encrypt.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Encrypt.java Sat Dec 26 17:39:16 2020
@@ -46,7 +46,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author  Ben Litchfield
  */
-@Command(name = "Encrypt", description = "Encrypt a PDF file.")
+@Command(name = "Encrypt", description = "Encrypt a PDF file.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class Encrypt implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
@@ -95,9 +95,6 @@ public final class Encrypt implements Ca
     @Parameters(paramLabel = "outputfile", index = "1", description = "the encrypted PDF file. If left blank the original file will be overwritten.")
     private File outfile;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     private Encrypt()
     {
     }

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportFDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportFDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportFDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportFDF.java Sat Dec 26 17:39:16 2020
@@ -37,7 +37,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "ExportFDF", description = "Exports AcroForm form data to FDF.")
+@Command(name = "ExportFDF", description = "Exports AcroForm form data to FDF.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class ExportFDF implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportXFDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportXFDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportXFDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExportXFDF.java Sat Dec 26 17:39:16 2020
@@ -37,7 +37,7 @@ import org.apache.pdfbox.pdmodel.fdf.FDF
  *
  * @author Ben Litchfield
  */
-@Command(name = "ExportXFDF", description = "Exports AcroForm form data to XFDF.")
+@Command(name = "ExportXFDF", description = "Exports AcroForm form data to XFDF.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class ExportXFDF implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractImages.java Sat Dec 26 17:39:16 2020
@@ -66,7 +66,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "ExtractImages", description = "Extracts the images from a PDF file.")
+@Command(name = "ExtractImages", description = "Extracts the images from a PDF file.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class ExtractImages implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
@@ -79,9 +79,6 @@ public final class ExtractImages impleme
             COSName.DCT_DECODE.getName(),
             COSName.DCT_DECODE_ABBREVIATION.getName());
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-password", description = "the password for the PDF or certificate in keystore.")    
     private String password;
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ExtractText.java Sat Dec 26 17:39:16 2020
@@ -59,7 +59,7 @@ import picocli.CommandLine.Parameters;
  * @author Ben Litchfield
  * @author Tilman Hausherr
  */
-@Command(name = "ExtractText", description = "Extract all text from the given PDF document.")
+@Command(name = "ExtractText", description = "Extract all text from the given PDF document.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class ExtractText  implements Callable<Integer>
 {
     private static final Log LOG = LogFactory.getLog(ExtractText.class);
@@ -94,9 +94,6 @@ public final class ExtractText  implemen
     @Option(names = "-ignoreBeads", description = "Disables the separation by beads")
     private boolean ignoreBeads = false;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-password", description = "the password for the PDF or certificate in keystore.")    
     private String password = "";
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImageToPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImageToPDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImageToPDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImageToPDF.java Sat Dec 26 17:39:16 2020
@@ -35,7 +35,7 @@ import picocli.CommandLine.Parameters;
 /**
  * Create a PDF document from images.
  */
-@Command(name = "ImageToPDF", description = "Create a PDF document from images.")
+@Command(name = "ImageToPDF", description = "Create a PDF document from images.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class ImageToPDF implements Callable<Integer>
 {
     private PDRectangle mediaBox = PDRectangle.LETTER;
@@ -62,9 +62,6 @@ public final class ImageToPDF implements
     @Parameters(paramLabel = "outputfile", index = "1", description = "the generated PDF file.")
     private File outfile;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     public static void main(String[] args)
     {
         // suppress the Dock icon on OS X

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportFDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportFDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportFDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportFDF.java Sat Dec 26 17:39:16 2020
@@ -37,7 +37,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "ImportFDF", description = "Import AcroForm form data from FDF.")
+@Command(name = "ImportFDF", description = "Import AcroForm form data from FDF.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public class ImportFDF implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportXFDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportXFDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportXFDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/ImportXFDF.java Sat Dec 26 17:39:16 2020
@@ -37,7 +37,7 @@ import java.io.PrintStream;
  *
  * @author Ben Litchfield
  */
-@Command(name = "ImportFDF", description = "Import AcroForm form data from XFDF.")
+@Command(name = "ImportFDF", description = "Import AcroForm form data from XFDF.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public class ImportXFDF
 {
     // Expected for CLI app to write to System.out/Sytem.err

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/OverlayPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/OverlayPDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/OverlayPDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/OverlayPDF.java Sat Dec 26 17:39:16 2020
@@ -39,16 +39,13 @@ import picocli.CommandLine.Parameters;
  * Based on code contributed by Balazs Jerk. 
  * 
  */
-@Command(name = "OverlayPDF", description = "Add an overlay to an existing PDF document.")
+@Command(name = "OverlayPDF", description = "Add an overlay to an existing PDF document.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class OverlayPDF implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSERR = System.err;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    private boolean usageHelpRequested;
-
     @Option(names = "-odd", description = "overlay file used for odd pages")
     private File oddPageOverlay;
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFBox.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFBox.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFBox.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFBox.java Sat Dec 26 17:39:16 2020
@@ -41,7 +41,7 @@ import picocli.CommandLine.Command;
     ImageToPDF.class,
     TextToPDF.class,
     WriteDecodedDoc.class,
-})
+}, versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class PDFBox implements Runnable
 {
     // Expected for CLI app to write to System.out/Sytem.err

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFMerger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFMerger.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFMerger.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFMerger.java Sat Dec 26 17:39:16 2020
@@ -34,7 +34,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "PDFMerger", description = "Merge multiple PDFs into one.")
+@Command(name = "PDFMerger", description = "Merge multiple PDFs into one.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class PDFMerger implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFSplit.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFSplit.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFSplit.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFSplit.java Sat Dec 26 17:39:16 2020
@@ -39,16 +39,13 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "PDFSplit", description = "Split a PDF into number of new documents.")
+@Command(name = "PDFSplit", description = "Split a PDF into number of new documents.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class PDFSplit implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSERR = System.err;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-password", description = "the password to decrypt the document.")    
     private String password;
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java Sat Dec 26 17:39:16 2020
@@ -46,16 +46,13 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "PDFToImage", description = "Convert a PDF document to image(s).")
+@Command(name = "PDFToImage", description = "Convert a PDF document to image(s).", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class PDFToImage implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSERR = System.err;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-password", description = "the password to decrypt the document")
     private String password;
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java Sat Dec 26 17:39:16 2020
@@ -42,16 +42,13 @@ import picocli.CommandLine.Parameters;
  * 
  * @author Ben Litchfield
  */
-@Command(name = "PrintPDF", description = "Print a PDF.")
+@Command(name = "PrintPDF", description = "Print a PDF.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public final class PrintPDF implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSERR = System.err;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-password", description = "the password to decrypt the document.")    
     private String password;
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java Sat Dec 26 17:39:16 2020
@@ -43,7 +43,7 @@ import picocli.CommandLine.Parameters;
  *
  * @author Ben Litchfield
  */
-@Command(name = "TextToPDF", description = "Create a PDF document from a text file.")
+@Command(name = "TextToPDF", description = "Create a PDF document from a text file.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public class TextToPDF implements Callable<Integer>
 {
     /**
@@ -90,9 +90,6 @@ public class TextToPDF implements Callab
     @Parameters(paramLabel = "outputfile", index="1", description = "the generated PDF file.")
     private File outfile;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     private enum PageSizes
     {
         LETTER(PDRectangle.LETTER),

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/Version.java Sat Dec 26 17:39:16 2020
@@ -21,6 +21,9 @@ import java.util.concurrent.Callable;
 
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
+import picocli.CommandLine.IVersionProvider;
+import picocli.CommandLine.Spec;
+import picocli.CommandLine.Model.CommandSpec;
 
 /**
  * A simple command line utility to get the version of PDFBox.
@@ -28,12 +31,14 @@ import picocli.CommandLine.Command;
  * @author Ben Litchfield
  */
 @Command(name = "Version", description = "Get the version of PDFBox.")
-final class Version implements Callable<Integer>
+final class Version implements Callable<Integer>, IVersionProvider
 {
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSOUT = System.out;
 
+    @Spec CommandSpec spec;
+
     private Version()
     {
         //should not be constructed.
@@ -44,16 +49,16 @@ final class Version implements Callable<
      *
      * @return The version of pdfbox that is being used.
      */
-    public static String getVersion()
+    public String[] getVersion()
     {
         String version = org.apache.pdfbox.util.Version.getVersion();
         if (version != null)
         {
-            return version;
+            return new String[] { spec.qualifiedName() + " [" + version + "]" };
         }
         else
         {
-            return "unknown";
+            return new String[] { "unknown" };
         }
     }
 
@@ -73,7 +78,7 @@ final class Version implements Callable<
 
     public Integer call()
     {
-        SYSOUT.println("Version:" + getVersion());
+        SYSOUT.println(getVersion()[0]);
         return 0;
     }
 }

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java?rev=1884825&r1=1884824&r2=1884825&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java Sat Dec 26 17:39:16 2020
@@ -41,16 +41,13 @@ import picocli.CommandLine.Parameters;
  *
  * @author Michael Traut
  */
-@Command(name = "WriteDecodedDoc", description = "Load document and write with all streams decoded.")
+@Command(name = "WriteDecodedDoc", description = "Load document and write with all streams decoded.", versionProvider = Version.class, mixinStandardHelpOptions = true)
 public class WriteDecodedDoc implements Callable<Integer>
 {
     // Expected for CLI app to write to System.out/Sytem.err
     @SuppressWarnings("squid:S106")
     private static final PrintStream SYSERR = System.err;
 
-    @Option(names = {"-h", "--help"}, usageHelp = true, description = "display this help message")
-    boolean usageHelpRequested;
-
     @Option(names = "-password", description = "the password to decrypt the document")
     private String password;