Come lavorare con le facciate PDF in Java
Appiattire le annotazioni
Appiattire tutte le annotazioni nel flusso di contenuto della pagina in modo che non siano più modificabili o rimovibili come oggetti di annotazione separati. Questo è un passaggio comune prima di stampare o archiviare un documento:
try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
editor.bindPdf("annotated.pdf");
editor.flattenAnnotations();
editor.save("flat.pdf");
}Rimuovere i segnalibri
Elimina tutti i segnalibri outline da un documento. I segnalibri (chiamati anche outline) sono le voci dell’albero di navigazione visibili nelle barre laterali dei lettori PDF:
try (PdfBookmarkEditor editor = new PdfBookmarkEditor()) {
editor.bindPdf("input.pdf");
editor.deleteBookmarks();
editor.save("no-bookmarks.pdf");
}Sostituire il testo
Sostituire una stringa in tutte le pagine di un documento. Questo è utile per riempire i segnaposto del modello prima di distribuire un documento:
try (PdfContentEditor editor = new PdfContentEditor()) {
editor.bindPdf("template.pdf");
editor.replaceText("{{Date}}", "2026-05-24");
editor.save("output.pdf");
}Crittografare un documento
Applica la crittografia AES-256 con permessi di accesso usando PdfFileSecurity. Il preset DocumentPrivilege.getForbidAll() disabilita tutte le operazioni; le singole autorizzazioni possono quindi essere riattivate con i metodi setter:
try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
DocumentPrivilege priv = DocumentPrivilege.getForbidAll();
priv.setAllowPrint(true);
security.encryptFile("user", "owner", priv, KeySize.x256);
}Estrai testo
Itera sul testo della pagina usando PdfExtractor. Chiama prima extractText() per elaborare tutte le pagine, poi recupera il testo di ciascuna pagina con getNextPageText():
try (PdfExtractor extractor = new PdfExtractor()) {
extractor.bindPdf("document.pdf");
extractor.extractText();
while (extractor.hasNextPageText()) {
String text = extractor.getNextPageText();
System.out.println(text);
}
}