Melindungi file PDF di Java

Aspose.PDF for Java menyediakan beberapa API untuk mengamankan file PDF dengan kata sandi dan izin.

Melindungi dokumen PDF dalam Java

Contoh-contoh di ProtectDocumentExamples.java demonstrasikan cara:

  1. Terapkan enkripsi ke sebuah Document dengan kata sandi pengguna dan pemilik.
  2. Batasi izin dengan DocumentPrivilege.
  3. Pilih satu CryptoAlgorithm untuk yang dilindungi Document.
  4. Dekripsi yang dilindungi Document.
  5. Ubah kata sandi yang ada pada Document.
  6. Uji kata sandi kandidat dengan PdfFileInfo dan Document.

Mengenkripsi PDF dengan hak istimewa terbatas

public static void encryptPassword(Path inputFile, Path outputFile) {
    Document document = new Document(inputFile.toString());
    try {
        DocumentPrivilege documentPrivilege = DocumentPrivilege.getForbidAll();
        documentPrivilege.setAllowScreenReaders(true);

        document.encrypt(
                USER_PASSWORD,
                OWNER_PASSWORD,
                documentPrivilege,
                CryptoAlgorithm.AESx128,
                false);
        document.save(outputFile.toString());
    } finally {
        document.close();
    }
}

Mengenkripsi file PDF

public static void encryptPdfFile(Path inputFile, Path outputFile) {
    Document document = new Document(inputFile.toString());
    try {
        document.encrypt(
                USER_PASSWORD,
                OWNER_PASSWORD,
                DocumentPrivilege.getAllowAll(),
                CryptoAlgorithm.RC4x128,
                false);
        document.save(outputFile.toString());
    } finally {
        document.close();
    }
}

Mendekripsi PDF yang dilindungi

public static void decryptPdfFile(Path inputFile, Path outputFile) {
    Document document = new Document(inputFile.toString(), USER_PASSWORD);
    try {
        document.decrypt();
        document.save(outputFile.toString());
    } finally {
        document.close();
    }
}

Mengubah kata sandi

public static void changePassword(Path inputFile, Path outputFile) {
    Document document = new Document(inputFile.toString(), OWNER_PASSWORD);
    try {
        document.changePasswords(OWNER_PASSWORD, "newuser", "newowner");
        document.save(outputFile.toString());
    } finally {
        document.close();
    }
}

Menentukan kata sandi yang benar dari daftar

public static void determineCorrectPasswordFromList(Path inputFile) {
    try (PdfFileInfo info = new PdfFileInfo(inputFile.toString())) {
        System.out.println("File is password protected: " + info.isEncrypted());
    }
    String[] passwords = {"test", "test1", "test2", "test3", USER_PASSWORD};
    for (String password : passwords) {
        try {
            Document document = new Document(inputFile.toString(), password);
            try {
                int pageCount = document.getPages().size();
                if (pageCount > 0) {
                    System.out.println("Password '" + password + "' is correct. Pages: " + pageCount);
                }
            } finally {
                document.close();
            }
        } catch (InvalidPasswordException ex) {
            System.out.println("Wrong password: " + password);
        }
    }
}