From f409b761be1a65908784d770db3617c2ca9838f3 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Mon, 24 Apr 2023 01:29:28 +0200 Subject: App.java: Start adding command line option parsing Used the following resources to see how to parse command line options using commons-cli: - https://reintech.io/blog/java-command-line-applications-parsing-processing-arguments - https://commons.apache.org/proper/commons-cli/usage.html Reusing the options from 'pdf-form-replace-font'. --- pom.xml | 7 ++++ .../com/teddywing/pdf_form_replace_font2/App.java | 38 ++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/pom.xml b/pom.xml index 164523a..c60298c 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,13 @@ compile + + commons-cli + commons-cli + 1.5.0 + compile + + junit junit diff --git a/src/main/java/com/teddywing/pdf_form_replace_font2/App.java b/src/main/java/com/teddywing/pdf_form_replace_font2/App.java index 3c23ba6..c916f62 100644 --- a/src/main/java/com/teddywing/pdf_form_replace_font2/App.java +++ b/src/main/java/com/teddywing/pdf_form_replace_font2/App.java @@ -1,5 +1,12 @@ package com.teddywing.pdf_form_replace_font2; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; + import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; @@ -18,6 +25,37 @@ import java.util.Map; public class App { public static void main(String[] args) throws IOException { + Options options = new Options(); + options.addOption("f", "find", true, "original font"); + options.addOption("r", "replace", true, "replacement font"); + options.addOption("o", "output", true, "output file"); + + options.addOption("h", "help", false, "print this help menu"); + options.addOption("V", "version", false, "show the program version"); + + CommandLineParser option_parser = new DefaultParser(); + try { + CommandLine options_matches = option_parser.parse(options, args); + + String find = options_matches.getOptionValue("find"); + String replace = options_matches.getOptionValue("replace"); + String output = options_matches.getOptionValue("output"); + + boolean should_show_help = options_matches.hasOption("help"); + boolean should_show_version = options_matches.hasOption("version"); + + if (should_show_help) { + HelpFormatter help_formatter = new HelpFormatter(); + help_formatter.printHelp("pdf-form-replace-font2", options); + + System.exit(0); + } + } + catch (ParseException e) { + System.err.println("error: " + e.getMessage()); + System.exit(64); + } + App.replacePdfFieldFont( new PdfReader("f1040.pdf"), new PdfWriter("f1040-courier.pdf"), -- cgit v1.2.3