blob: b69dcd3aacfca7ea7ca589da73251180e53f243b (
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.FORCE_NOT_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();
}
}
|