Come lavorare con le facciate PDF in Java

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);
    }
}

Vedi anche

 Italiano