Hoe te werken met het Pdf Object Model in Java
Toegang tot de Documentcatalogus
De PDF-catalogus is de wortel van de objectboom van het document en wordt weergegeven als een PdfDictionary. Toegang tot deze via Document.getCatalog() om document-niveau-eigenschappen te inspecteren of te wijzigen:
try (Document doc = new Document("input.pdf")) {
PdfDictionary catalog = doc.getCatalog();
// Inspect catalog entries
}Werken met PdfDictionary
PdfDictionary is de fundamentele sleutel-waarde-container in dit low-level PDF-objectmodel. Gebruik PdfName.of() om naam-sleutels te maken en waarden van elk Pdf-objecttype op te slaan:
PdfDictionary dict = new PdfDictionary();
dict.set(PdfName.of("Title"), new PdfString("My Document"));
PdfString title = (PdfString) dict.get(PdfName.of("Title"));
System.out.println(title.getString());Werken met PdfArray
PdfArray is het geordende sequentietype in dit objectmodel. Elementen zijn nul-geïndexeerd en kunnen een willekeurige mix van Pdf-objecttypen bevatten. Haal waarden op en cast ze naar het juiste type:
PdfArray array = new PdfArray();
array.add(PdfInteger.valueOf(100));
array.add(PdfInteger.valueOf(200));
array.add(PdfInteger.valueOf(300));
System.out.println("Array length: " + array.size());
int first = ((PdfInteger) array.get(0)).intValue(); // 100Toegang tot de Trailer Dictionary
De PDF-trailer-woordenlijst bevat de locatie van de kruisreferentietabel en verwijzingen naar de documentcatalogus (/Root) en het documentinformatie-woordenboek (/Info):
try (Document doc = new Document("input.pdf")) {
PdfDictionary trailer = doc.getTrailer();
// Trailer contains /Root, /Info, /Encrypt entries
}Naamgetallenboom
Het onderliggende objectmodel van de PDF-specificatie (wat ISO 32000-1 de COS-laag noemt) maakt de PDF-naamboomstructuur bloot die wordt gebruikt voor nummerbomen, zoals de ouderboom voor structuurelementen. PdfDictionary en PdfArray worden gebruikt om de Nums-arrays te doorlopen (de eigen benaming van de PDF-specificatie voor deze constructie, ISO 32000-1 §7.9.7 — geen Java-symbool) in de knooppunten van de nummerboom. Dit is de laagste-niveau API voor het werken met de logische structuur van een getagde PDF-document.