Jak pracować z fasadami PDF w Java

Jak pracować z fasadami PDF w Java

Spłaszcz adnotacje

Spłaszcz wszystkie adnotacje do strumienia zawartości strony, aby nie były już edytowalne ani usuwalne jako oddzielne obiekty adnotacji. Jest to powszechny krok przed drukowaniem lub archiwizacją dokumentu:

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

Usuń zakładki

Usuń wszystkie zakładki konturu z dokumentu. Zakładki (zwane także konturami) to pozycje drzewa nawigacji widoczne w panelach bocznych czytnika PDF:

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

Zastąp tekst

Zastąp ciąg znaków we wszystkich stronach dokumentu. Jest to przydatne przy wypełnianiu pól zastępczych szablonu przed dystrybucją dokumentu:

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

Zaszyfruj dokument

Zastosuj szyfrowanie AES-256 z uprawnieniami dostępu przy użyciu PdfFileSecurity. Ustawienie DocumentPrivilege.getForbidAll() wyłącza wszystkie operacje; poszczególne uprawnienia można następnie ponownie włączyć metodami ustawiającymi:

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

Wyodrębnij tekst

Iteruj po tekście stron przy użyciu PdfExtractor. Najpierw wywołaj extractText(), aby przetworzyć wszystkie strony, a następnie pobierz tekst każdej strony za pomocą getNextPageText():

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

Zobacz także

 Polski