Wie man mit PDF-Facades in Java arbeitet

Wie man mit PDF-Facades in Java arbeitet

Annotationen flachlegen

Alle Annotationen in den Seiteninhaltstream einbetten, sodass sie nicht mehr editierbar oder als separate Annotationsobjekte entfernbar sind. Dies ist ein üblicher Schritt vor dem Drucken oder Archivieren eines Dokuments:

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("annotated.pdf");
    editor.flattenAnnotations();
    editor.save("flat.pdf");
}

Lesezeichen entfernen

Alle Gliederungs-Lesezeichen aus einem Dokument löschen. Lesezeichen (auch Gliederungen genannt) sind die Navigationseinträge im Baum, die in den Seitenleisten von PDF-Readern sichtbar sind:

try (PdfBookmarkEditor editor = new PdfBookmarkEditor()) {
    editor.bindPdf("input.pdf");
    editor.deleteBookmarks();
    editor.save("no-bookmarks.pdf");
}

Text ersetzen

Einen String auf allen Seiten eines Dokuments ersetzen. Dies ist nützlich, um Platzhalter in Vorlagen auszufüllen, bevor ein Dokument verteilt wird:

try (PdfContentEditor editor = new PdfContentEditor()) {
    editor.bindPdf("template.pdf");
    editor.replaceText("{{Date}}", "2026-05-24");
    editor.save("output.pdf");
}

Dokument verschlüsseln

Wenden Sie AES-256 Verschlüsselung mit Zugriffsberechtigungen unter Verwendung von PdfFileSecurity an. Die DocumentPrivilege.getForbidAll() Voreinstellung deaktiviert alle Vorgänge; einzelne Berechtigungen können anschließend mit Setter-Methoden wieder aktiviert werden:

try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
    DocumentPrivilege priv = DocumentPrivilege.getForbidAll();
    priv.setAllowPrint(true);
    security.encryptFile("user", "owner", priv, KeySize.x256);
}

Text extrahieren

Iterieren Sie über den Seitentext mit PdfExtractor. Rufen Sie zuerst extractText() auf, um alle Seiten zu verarbeiten, und holen Sie dann den Text jeder Seite mit getNextPageText() ab:

try (PdfExtractor extractor = new PdfExtractor()) {
    extractor.bindPdf("document.pdf");
    extractor.extractText();
    while (extractor.hasNextPageText()) {
        String text = extractor.getNextPageText();
        System.out.println(text);
    }
}

Siehe auch

 Deutsch