Java에서 PDF 파일 보호

Aspose.PDF for Java는 비밀번호와 권한으로 PDF 파일을 보호하기 위한 여러 API를 제공합니다.

Java로 PDF 문서 보호

ProtectDocumentExamples.java의 예는 다음 방법을 보여줍니다.

  1. 사용자 및 소유자 비밀번호를 사용하여 Document에 암호화를 적용하세요.
  2. DocumentPrivilege로 권한을 제한하세요.
  3. 보호된 Document에 대해 CryptoAlgorithm을 선택하세요.
  4. 보호된 Document의 암호를 해독하세요.
  5. Document의 기존 비밀번호를 변경하세요.
  6. PdfFileInfo 및 Document를 사용하여 후보 비밀번호를 테스트하세요.

제한된 권한으로 PDF 암호화

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

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

보호된 PDF 암호 해독

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

비밀번호 변경

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

목록에서 올바른 비밀번호 확인

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