Introdução
Aspose.PDF FOSS para Python inclui um subpacote aspose_pdf.generated com quatro módulos: document.py, forms.py, pdfa.py e security.py. Nenhum deles é reexportado do pacote de nível superior aspose_pdf, então cada classe neste guia é importada pelo seu caminho completo pontuado — from aspose_pdf.generated.document import Document, não from aspose_pdf import Document.
Os quatro módulos adotam duas abordagens diferentes. generated.document, generated.forms e generated.pdfa definem cada um suas próprias classes: implementações independentes que espelham a estrutura do Document do pacote principal, UnsignedContent/UnsignedContentAbsorber e PdfAValidateOptions/PdfAValidationResult — úteis para código escrito contra esse layout de namespace espelhado, mas constituem um conjunto real e separado de classes, e não aliases. Por outro lado, generated.security não faz nenhuma reimplementação: ele importa CompromiseCheckResult, SignaturesCompromiseDetector e os enums de validação diretamente de aspose_pdf.security e aspose_pdf.validation e os reexporta, de modo que ambos os caminhos de importação resolvem para o mesmo objeto de classe.
Este guia cobre os quatro e é explícito sobre onde uma classe generated se comporta de maneira diferente da sua contraparte no pacote principal com o mesmo nome — Document e UnsignedContentAbsorber existem em dois locais com duas implementações distintas, o que é exatamente o tipo de situação que é fácil errar ao importar apenas pelo nome.
Aspose.PDF FOSS para Python é um pacote Python, aspose-pdf-foss-for-python, lançado sob a licença MIT, exigindo Python 3.11 ou superior. Seu nome de módulo de nível superior é aspose_pdf; veja a seção Início Rápido abaixo para instalação. O pacote central depende apenas de cryptography e asn1crypto; extras opcionais adicionam decodificação de imagens baseada em Pillow, suporte a fontes WOFF2 baseado em Brotli e layout de texto complexo baseado em HarfBuzz.
Recursos Principais
Uma Implementação de Segundo Documento
aspose_pdf.generated.document.Document implementa o mesmo ciclo de vida central que o principal aspose_pdf.Document — load_from(), save(), encrypt()/decrypt()/change_passwords(), optimize()/optimize_resources(), repair(), flatten() e validate()/check() — sobre o mesmo motor aspose_pdf.engine.simple_pdf.SimplePdf. Ele reflete um subconjunto do principal Document: não possui autoria de página no estilo pages.add(), nem form/outlines/attachments, e nem render_page(). Como o nome da classe colide com o Document do pacote principal, importe-a com um alias quando ambos forem necessários no mesmo módulo.
from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument
with Document() as document:
document.pages.add()
document.save("source.pdf")
compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)
compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()
Empacotando Conteúdo Não Assinado
aspose_pdf.generated.forms.UnsignedContentAbsorber e UnsignedContent fornecem um contêiner para campos de formulário, páginas e anotações não assinados. Isto difere do aspose_pdf.UnsignedContentAbsorber(document) de nível superior, que recebe um Document real e filtra seus form_fields/annotations para itens cujo atributo is_signed/signed é falso. A versão generated.forms não recebe nenhum documento — extract() simplesmente empacota tudo que pages, form_fields e annotations você passar como argumentos nomeados em uma instância UnsignedContent, o que é útil quando os itens não assinados já foram coletados em outro lugar e apenas necessitam do contêiner compartilhado e de seus mutadores no estilo add_page()/remove_page().
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
content = absorber.extract(
form_fields=["signature_field", "initials_field"],
annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)
content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())
PDF/A Opções de Validação e Resultados
aspose_pdf.generated.pdfa.PdfAValidateOptions coleta as configurações de validação e as fontes de entrada; PdfAValidationResult coleta o resultado. PdfAValidateOptions.add_input() verifica um caminho de string com Path.exists() antes de aceitá-lo e levanta PdfIOException se o arquivo estiver ausente, de modo que o chamador descubra imediatamente um caminho de entrada inválido em vez de somente no momento da validação.
from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
document.pages.add()
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)
try:
options.add_input("missing.pdf")
except PdfIOException as error:
print(f"rejected: {error}")
result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())
Tipos de Segurança e Validação Reexportados
aspose_pdf.generated.security importa CompromiseCheckResult e SignaturesCompromiseDetector diretamente de aspose_pdf.security, e CertificationLevel, RevocationStatus, TrustStatus, ValidationMethod, ValidationMode, ValidationOptions, ValidationResult e ValidationStatus de aspose_pdf.validation. Ao contrário de Document e UnsignedContentAbsorber, não há reimplementação independente aqui — ambos os caminhos de importação retornam o mesmo objeto.
from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector
assert SignaturesCompromiseDetector is CanonicalDetector
detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)
Início Rápido
Instale o pacote, depois crie um documento com o principal Document, salve-o e execute-o com as opções generated.pdfa e objetos de resultado.
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
page = document.pages.add()
page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
result = PdfAValidationResult()
if not options.inputs:
result.add_error("No inputs registered")
print(result.to_dict())
Formatos suportados
| Formato | Extensão | Ler | Escrever |
|---|---|---|---|
| Sim | Sim |
A leitura e escrita de PDF é Aspose.PDF FOSS para a função central do Python. Cada classe neste guia — o principal Document, o espelho generated.document.Document, e os auxiliares PDF/A — opera sobre entrada e saída de PDF através do motor compartilhado SimplePdf; aspose_pdf.generated altera a classe que você importa, não o formato de arquivo que está sendo processado.
Código aberto e licenciamento
Aspose.PDF FOSS para Python é lançado sob a licença MIT: sem restrições de uso, sem taxas de tempo de execução e sem requisitos de registro para uso comercial ou pessoal. O código-fonte está hospedado em github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python, e o pacote é publicado em PyPI como aspose-pdf-foss-for-python.