From d48f72fd266fb9b6b48122a4b192140774475416 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 22 Apr 2023 19:27:58 +0200 Subject: Change PDF form field font Use iText to change the font of interactive form fields in a PDF. Changes the font in 'f1040.pdf' to Courier. This code is based on the following example from iText: https://kb.itextsupport.com/home/it7kb/ebooks/itext-7-jump-start-tutorial-for-net/chapter-5-manipulating-an-existing-pdf-document-net#Chapter5:ManipulatinganexistingPDFdocument|.NET-Changingthepropertiesofformfields For now I just downloaded the dependencies' JAR files and put them in a 'lib/' directory rather than have to learn how to use a dependency management tool like Maven. Here is the contents of the 'lib/' directory: barcodes-7.2.2.jar commons-7.2.2.jar font-asian-7.2.2.jar forms-7.2.2.jar hyph-7.2.2.jar io-7.2.2.jar kernel-7.2.2.jar layout-7.2.2.jar pdfa-7.2.2.jar pdftest-7.2.2.jar sign-7.2.2.jar slf4j-api-1.7.9.jar styled-xml-parser-7.2.2.jar svg-7.2.2.jar To run this: $ make $ make run --- Main.java | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Main.java (limited to 'Main.java') diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..7ae3719 --- /dev/null +++ b/Main.java @@ -0,0 +1,29 @@ +import com.itextpdf.kernel.pdf.*; +import com.itextpdf.kernel.font.*; +import com.itextpdf.io.font.constants.StandardFonts; +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") + ); + + PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, false); + + PdfFont courier = PdfFontFactory.createFont(StandardFonts.COURIER); + Map fields = form.getFormFields(); + + for (var entry : fields.entrySet()) { + PdfFormField field = entry.getValue(); + field.setFont(courier); + } + + pdf.close(); + } +} -- cgit v1.2.3