PDFBox - szyfrowanie dokumentu PDF
W poprzednim rozdziale widzieliśmy, jak wstawić obraz do dokumentu PDF. W tym rozdziale omówimy sposób szyfrowania dokumentu PDF.
Szyfrowanie dokumentu PDF
Dokument PDF można zaszyfrować za pomocą metod udostępnionych przez StandardProtectionPolicy i AccessPermission classes.
Plik AccessPermissionklasa służy do ochrony dokumentu PDF poprzez przypisanie do niego uprawnień dostępu. Korzystając z tej klasy, możesz ograniczyć użytkownikom możliwość wykonywania następujących operacji.
- Wydrukuj dokument
- Zmodyfikuj treść dokumentu
- Skopiuj lub wyodrębnij zawartość dokumentu
- Dodaj lub zmodyfikuj adnotacje
- Wypełnij interaktywne pola formularzy
- Wyodrębnij tekst i grafikę, aby były dostępne dla osób niedowidzących
- Złóż dokument
- Drukuj w gorszej jakości
Plik StandardProtectionPolicy class służy do dodawania ochrony hasłem do dokumentu.
Poniżej przedstawiono kroki szyfrowania istniejącego dokumentu PDF.
Krok 1: Ładowanie istniejącego dokumentu PDF
Załaduj istniejący dokument PDF metodą statyczną load() z PDDocumentklasa. Ta metoda akceptuje obiekt pliku jako parametr, ponieważ jest to metoda statyczna, którą można wywołać za pomocą nazwy klasy, jak pokazano poniżej.
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);
Krok 2: Tworzenie obiektu uprawnień dostępu
Utwórz wystąpienie AccessPermission klasa, jak pokazano poniżej.
AccessPermission accessPermission = new AccessPermission();
Krok 3: Tworzenie obiektu StandardProtectionPolicy
Utwórz wystąpienie StandardProtectionPolicy class, przekazując hasło właściciela, hasło użytkownika i AccessPermission obiekt, jak pokazano poniżej.
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);
Krok 4: Ustawianie długości klucza szyfrowania
Ustaw długość klucza szyfrowania za pomocą setEncryptionKeyLength() metoda, jak pokazano poniżej.
spp.setEncryptionKeyLength(128);
Krok 5: Ustawianie uprawnień
Ustaw uprawnienia za pomocą setPermissions()metoda klasy StandardProtectionPolicy. Ta metoda akceptuje plikAccessPermission obiekt jako parametr.
spp.setPermissions(accessPermission);
Krok 6: Ochrona dokumentu
Możesz zabezpieczyć swój dokument za pomocą rozszerzenia protect() metoda PDDocumentklasa, jak pokazano poniżej. PrzekażStandardProtectionPolicy obiekt jako parametr tej metody.
document.protect(spp);
Krok 7: Zapisywanie dokumentu
Po dodaniu wymaganej treści zapisz dokument PDF za pomocą rozszerzenia save() metoda PDDocument klasa, jak pokazano w poniższym bloku kodu.
document.save("Path");
Krok 8: Zamknięcie dokumentu
Na koniec zamknij dokument za pomocą close() metoda PDDocument klasa, jak pokazano poniżej.
document.close();
Przykład
Załóżmy, że mamy dokument PDF o nazwie sample.pdf, na ścieżce C:/PdfBox_Examples/ z pustymi stronami, jak pokazano poniżej.
Ten przykład pokazuje, jak zaszyfrować wyżej wymieniony dokument PDF. Tutaj załadujemy dokument PDF o nazwiesample.pdfi zaszyfruj. Zapisz ten kod w pliku o nazwieEncriptingPDF.java.
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
public static void main(String args[]) throws Exception {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/sample.pdf");
PDDocument document = PDDocument.load(file);
//Creating access permission object
AccessPermission ap = new AccessPermission();
//Creating StandardProtectionPolicy object
StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
//Setting the length of the encryption key
spp.setEncryptionKeyLength(128);
//Setting the access permissions
spp.setPermissions(ap);
//Protecting the document
document.protect(spp);
System.out.println("Document encrypted");
//Saving the document
document.save("C:/PdfBox_Examples/sample.pdf");
//Closing the document
document.close();
}
}
Skompiluj i uruchom zapisany plik Java z wiersza poleceń, używając następujących poleceń.
javac EncriptingPDF.java
java EncriptingPDF
Po wykonaniu powyższy program szyfruje podany dokument PDF wyświetlając następujący komunikat.
Document encrypted
Jeśli spróbujesz otworzyć dokument sample.pdf, nie możesz, ponieważ jest zaszyfrowany. Zamiast tego prosi o wpisanie hasła, aby otworzyć dokument, jak pokazano poniżej.