Proteger arquivos PDF em Python
Criptografar PDF com senha e permissões
Use Aspose.PDF for Python via .NET para proteger um documento PDF com criptografia baseada em senha e permissões restritas.
- Carregue o documento PDF.
- Criar um
DocumentPrivilegeobjeto de permissões. - Habilite as permissões necessárias.
- Defina as senhas de usuário e proprietário.
- Escolha o algoritmo de criptografia.
- Aplicar criptografia ao documento.
- Salvar o PDF criptografado.
import aspose.pdf as ap
def encrypt_password(infile, outfile):
"""
Encrypt PDF with password and permissions.
Args:
infile (str): Input PDF filename
outfile (str): Output PDF filename
Returns:
None
Example:
encrypt_password("sample.pdf", "sample_protected.pdf")
Note:
Uses AES 128-bit encryption. Allows screen readers, forbids all other operations.
User password: "userpassword", Owner password: "ownerpassword".
"""
document = ap.Document(infile)
document_privilege = ap.facades.DocumentPrivilege.forbid_all
document_privilege.allow_screen_readers = True
document.encrypt(
"userpassword",
"ownerpassword",
document_privilege,
ap.CryptoAlgorithm.AESx128,
False,
)
document.save(outfile)
Criptografar PDF com permissões totais
Criptografar um documento PDF permitindo permissões de acesso total usando Aspose.PDF for Python via .NET. Este exemplo usa criptografia RC4 de 128 bits para compatibilidade com visualizadores de PDF mais antigos.
- Carregue o documento PDF.
- Defina as senhas de usuário e de proprietário.
- Defina permissões de acesso total.
- Escolha o algoritmo de criptografia.
- Chamada
encrypt()com senhas, permissões e algoritmo. - Salvar o PDF criptografado.
import aspose.pdf as ap
def encrypt_pdf_file(infile, outfile):
"""
Encrypt PDF with full permissions.
Args:
infile (str): Input PDF filename
outfile (str): Output PDF filename
Returns:
None
Example:
encrypt_pdf_file("sample.pdf", "sample_protected.pdf")
Note:
Uses RC4 128-bit encryption with allow_all privileges.
"""
document = ap.Document(infile)
document.encrypt(
"userpassword",
"ownerpassword",
ap.facades.DocumentPrivilege.allow_all,
ap.CryptoAlgorithm.RC4x128,
False,
)
document.save(outfile)
Descriptografar arquivo PDF usando senha do proprietário
Para remover a proteção por senha e restaurar o acesso total:
- Carregue o PDF criptografado usando a senha correta (usuário ou proprietário).
- Remova todas as proteções por senha e configurações de criptografia do documento.
- Salve o PDF agora desprotegido no arquivo de saída especificado.
import aspose.pdf as ap
def decrypt_pdf_file(infile, outfile):
"""
Decrypt password-protected PDF.
Args:
infile (str): Input encrypted PDF filename
outfile (str): Output decrypted PDF filename
Returns:
None
Example:
decrypt_pdf_file("sample_protected.pdf", "sample_unprotected.pdf")
Note:
Requires user password to open document.
"""
document = ap.Document(infile, "userpassword")
document.decrypt()
document.save(outfile)
Alterar senha de um arquivo PDF
Atualizar as credenciais de segurança (senhas de usuário e proprietário) de um documento PDF enquanto preserva seu conteúdo e estrutura.
- Abra o PDF usando a senha de proprietário existente, que fornece acesso total às configurações de segurança.
- Substitua as senhas antigas por uma nova senha de usuário e uma nova senha de proprietário.
- Salve o PDF com as configurações de senha atualizadas.
import aspose.pdf as ap
def change_password(infile, outfile):
"""
Change user and owner passwords.
Args:
infile (str): Input PDF filename
outfile (str): Output PDF filename
Returns:
None
Example:
change_password("sample_protected.pdf", "sample_changepassword.pdf")
Note:
Changes from ownerpassword to newuser/newowner.
"""
document = ap.Document(infile, "ownerpassword")
document.change_passwords("ownerpassword", "newuser", "newowner")
document.save(outfile)
Determine a senha correta a partir do Array
Em alguns cenários, pode ser necessário identificar a senha correta a partir de uma lista de possíveis candidatas para acessar um PDF protegido. O trecho abaixo verifica se um arquivo PDF está criptografado e então tenta abri‑lo iterando por uma lista pré‑definida de senhas.
O processo inclui:
- Usar
PdfFileInfopara detectar se o PDF está criptografado. - Abra o PDF com cada senha usando
ap.Document(). - Se for bem-sucedido, ele imprime o número de páginas.
- Se não, ele captura a exceção e relata a senha falhada.
import aspose.pdf as ap
def determine_correct_password_from_list(infile):
"""
Test multiple passwords to find correct one.
Args:
infile (str): Input encrypted PDF filename
Returns:
None
Example:
determine_correct_password_from_list("sample_protected.pdf")
Note:
Tries passwords: test, test1, test2, test3, userpassword.
Prints page count if password is correct.
"""
info = ap.facades.PdfFileInfo(infile)
print(f"File is password protected {info.is_encrypted}")
passwords = "test", "test1", "test2", "test3", "userpassword"
for password in passwords:
try:
document = ap.Document(infile, password)
count = len(document.pages)
if count > 0:
print(f"Number of Page in document are = {count}")
except RuntimeError as ex:
template = "An exception of type {0} occurred. Arguments:\n{1!r}"
message = template.format(type(ex).__name__, ex.args)
print(message)