aboutsummaryrefslogtreecommitdiffstats
path: root/Main.java
blob: fd4a8d537ddfc0f40d9fadd5fc12ae2e884fd35e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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.PREFER_EMBEDDED);

		PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, false);
		Map<String, PdfFormField> 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();
	}
}