From 664aa4aab03d73157996e394e17057c7d7bff430 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 23 Apr 2023 20:05:49 +0200 Subject: Move 'Main.java' to 'App.java' Build our earlier code with Maven. --- Main.java | 67 ------------------- Makefile | 8 ++- pom.xml | 4 +- .../com/teddywing/pdf_form_replace_font2/App.java | 77 +++++++++++++++++++--- 4 files changed, 75 insertions(+), 81 deletions(-) delete mode 100644 Main.java diff --git a/Main.java b/Main.java deleted file mode 100644 index b69dcd3..0000000 --- a/Main.java +++ /dev/null @@ -1,67 +0,0 @@ -import com.itextpdf.kernel.pdf.*; -import com.itextpdf.kernel.font.*; -import com.itextpdf.io.font.constants.StandardFonts; -import com.itextpdf.io.font.FontProgram; -import com.itextpdf.io.font.FontProgramFactory; -import com.itextpdf.io.font.PdfEncodings; -import com.itextpdf.forms.*; -import com.itextpdf.forms.fields.*; - -import java.io.*; -import java.util.Map; - -public class Main { - public static void main(String args[]) throws IOException { - PdfDocument pdf = new PdfDocument( - new PdfReader("f1040.pdf"), - new PdfWriter("f1040-courier.pdf") - ); - - // FontProgramFactory.registerSystemFontDirectories(); - // FontProgramFactory.registerFontDirectory("/System/Library/Fonts/"); - FontProgramFactory.registerFontDirectory("/System/Library/Fonts/Supplemental/"); - // FontProgramFactory - // .registerFont("/System/Library/Fonts/Supplemental/Courier New.ttf", "hihoaliaso"); - // System.out.println("is registered: " - // + FontProgramFactory.isRegisteredFont("CourierNewPSMT")); - - System.out.println(FontProgramFactory.getRegisteredFonts()); - System.out.println(FontProgramFactory.getRegisteredFontFamilies()); - - // FontProgram courier_program = FontProgramFactory.createFont("CourierNewPSMT"); - // FontProgram courier_program = FontProgramFactory - // .createFont("/System/Library/Fonts/Supplemental/Courier New.ttf"); - FontProgram courier_program = FontProgramFactory - .createRegisteredFont("CourierNewPSMT"); - // FontProgram courier_program = FontProgramFactory - // .createFont("Courier New.ttf"); - // FontProgram courier_program = FontProgramFactory - // .createFont("/System/Library/Fonts/Supplemental/Copperplate.ttc", 0, false); - PdfFont courier = PdfFontFactory - .createFont(courier_program, PdfEncodings.UTF8, PdfFontFactory.EmbeddingStrategy.FORCE_NOT_EMBEDDED); - - PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, false); - Map fields = form.getFormFields(); - - for (var entry : fields.entrySet()) { - // TODO: Try printing original font family and size on field. - PdfFormField field = entry.getValue(); - - PdfFont original_font = field.getFont(); - // System.out.println("Font: " + field.getFontSize()); - - String original_postscript_name = original_font - .getFontProgram() - .getFontNames() - .getFontName(); - - if (original_postscript_name.equals("HelveticaLTStd-Bold")) { - field.setFont(courier); - // System.out.println("F: " + field.getFont()); - // System.out.println("R: " + field.regenerateField()); - } - } - - pdf.close(); - } -} diff --git a/Makefile b/Makefile index 0125451..85923cf 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,10 @@ CLASSPATH := -classpath '.:./lib/*' all: javac $(CLASSPATH) Main.java +.PHONY: compile +compile: + mvn compile + .PHONY: run -run: - java $(CLASSPATH) Main +run: compile + mvn exec:java -Dexec.mainClass='com.teddywing.pdf_form_replace_font2.App' diff --git a/pom.xml b/pom.xml index 3fe7edd..32bf23f 100644 --- a/pom.xml +++ b/pom.xml @@ -16,8 +16,8 @@ UTF-8 - 1.7 - 1.7 + 11 + 11 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 ff3fbaf..2fb907b 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,13 +1,70 @@ package com.teddywing.pdf_form_replace_font2; -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } +import com.itextpdf.kernel.pdf.*; +import com.itextpdf.kernel.font.*; +import com.itextpdf.io.font.constants.StandardFonts; +import com.itextpdf.io.font.FontProgram; +import com.itextpdf.io.font.FontProgramFactory; +import com.itextpdf.io.font.PdfEncodings; +import com.itextpdf.forms.*; +import com.itextpdf.forms.fields.*; + +import java.io.*; +import java.util.Map; + +public class App { + + public static void main(String[] args) throws IOException { + PdfDocument pdf = new PdfDocument( + new PdfReader("f1040.pdf"), + new PdfWriter("f1040-courier.pdf") + ); + + // FontProgramFactory.registerSystemFontDirectories(); + // FontProgramFactory.registerFontDirectory("/System/Library/Fonts/"); + FontProgramFactory.registerFontDirectory("/System/Library/Fonts/Supplemental/"); + // FontProgramFactory + // .registerFont("/System/Library/Fonts/Supplemental/Courier New.ttf", "hihoaliaso"); + // System.out.println("is registered: " + // + FontProgramFactory.isRegisteredFont("CourierNewPSMT")); + + System.out.println(FontProgramFactory.getRegisteredFonts()); + System.out.println(FontProgramFactory.getRegisteredFontFamilies()); + + // FontProgram courier_program = FontProgramFactory.createFont("CourierNewPSMT"); + // FontProgram courier_program = FontProgramFactory + // .createFont("/System/Library/Fonts/Supplemental/Courier New.ttf"); + FontProgram courier_program = FontProgramFactory + .createRegisteredFont("CourierNewPSMT"); + // FontProgram courier_program = FontProgramFactory + // .createFont("Courier New.ttf"); + // FontProgram courier_program = FontProgramFactory + // .createFont("/System/Library/Fonts/Supplemental/Copperplate.ttc", 0, false); + PdfFont courier = PdfFontFactory + .createFont(courier_program, PdfEncodings.UTF8, PdfFontFactory.EmbeddingStrategy.FORCE_NOT_EMBEDDED); + + PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, false); + Map fields = form.getFormFields(); + + for (var entry : fields.entrySet()) { + // TODO: Try printing original font family and size on field. + PdfFormField field = entry.getValue(); + + PdfFont original_font = field.getFont(); + // System.out.println("Font: " + field.getFontSize()); + + String original_postscript_name = original_font + .getFontProgram() + .getFontNames() + .getFontName(); + + if (original_postscript_name.equals("HelveticaLTStd-Bold")) { + field.setFont(courier); + // System.out.println("F: " + field.getFont()); + // System.out.println("R: " + field.regenerateField()); + } + } + + pdf.close(); + } } -- cgit v1.2.3