Trabalhando com a Compatibilidade Gerada API
Trabalhando com a Compatibilidade Gerada API
Aspose.PDF FOSS para Python entrega uma segunda superfície API menor sob o subpacote aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent e UnsignedContentAbsorber, e generated.pdfa.PdfAValidateOptions e PdfAValidationResult. Cada uma dessas classes compartilha seu nome com uma classe na API principal da biblioteca (aspose_pdf.Document, aspose_pdf.UnsignedContent, e assim por diante), mas são classes separadas, definidas independentemente, com uma superfície de método reduzida. Elas existem como uma camada de compatibilidade autônoma — sempre importe-as pelo caminho completo aspose_pdf.generated.* para que você saiba qual está chamando.
Ciclo de vida do documento via o Document gerado
generated.document.Document suporta o ciclo de vida central do documento: carregamento, salvamento, otimização básica, criptografia e validação. A maioria de suas propriedades são tipadas Any ao invés dos tipos mais ricos expostos na classe principal Document.
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)
if doc.validate():
doc.save("output.pdf")
doc.dispose()Criptografia e alterações de senha usam um formulário de senha única ao invés das senhas separadas de usuário/proprietário do Document.encrypt principal:
from aspose_pdf.generated.document import Document
doc = Document()
doc.load_from("input.pdf")
doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")Extraindo conteúdo não assinado
generated.forms.UnsignedContentAbsorber extrai as páginas, campos de formulário e anotações de um documento que ainda não foram assinados para um contêiner UnsignedContent. Chame extract() para executar a extração, então get_extracted() ou has_extracted() para verificar o resultado sem reexecutá-lo.
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber
doc = Document()
doc.load_from("input.pdf")
absorber = UnsignedContentAbsorber()
extracted = absorber.extract()
print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)
if absorber.has_extracted():
same_result = absorber.get_extracted()
absorber.reset()UnsignedContent também pode ser construído e preenchido diretamente, independente de um absorvedor:
from aspose_pdf.generated.forms import UnsignedContent
bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)
bundle.remove_page(some_page)
bundle.reset()PDF/A opções de validação e resultados
generated.pdfa.PdfAValidateOptions e PdfAValidationResult são um par independente de opções/resultado para fluxos de trabalho de validação no estilo PDF/A. Eles não são as classes retornadas pelo API principal Document.validate_pdfa() ou consumidas por PdfAValidator.process() — que usam suas próprias classes PdfAValidateOptions e PdfAValidationResult definidas separadamente, com uma superfície mais rica (level, warnings, is_heuristic e um font_lookup_directory).
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")
stored_options = options.get_options()
result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")
summary = result.to_dict()
is_valid = result.is_validDicas e Melhores Práticas
- Importe cada classe
generatedatravés de seu caminho completo de submódulo (from aspose_pdf.generated.document import Document, e de forma semelhante paragenerated.formsegenerated.pdfa) — nunca presuma que uma importação simples deDocumentouUnsignedContentresolva para a versão de compatibilidade. - Atribua à classe importada um nome local distintivo sempre que um arquivo também usar o API principal no mesmo módulo, para que as duas superfícies permaneçam visivelmente separadas em cada ponto de chamada.
- Trate
generated.pdfa.PdfAValidateOptions/PdfAValidationResultcomo um par autônomo: construa as opções, execute sua própria lógica de validação e registre as descobertas comadd_error()você mesmo — elas não são preenchidas automaticamente porDocument.validate_pdfa(). - Verifique
UnsignedContentAbsorber.has_extracted()antes de chamarget_extracted()se não tiver certeza de queextract()já foi executado. - Prefira o
aspose_pdf.DocumentAPI principal para novo código, a menos que você precise especificamente da superfície reduzida de compatibilidade gerada.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
Métodos Document errados disponíveis (faltando pages, form, xmp_metadata e similares) | Importado generated.document.Document em vez do aspose_pdf.Document principal | Importe a classe principal (import aspose_pdf; aspose_pdf.Document()) a menos que a superfície reduzida seja o que você pretende |
PdfAValidateOptions/PdfAValidationResult de generated.pdfa não funcionam com PdfAValidator.process() | O PdfAValidator principal do API espera suas próprias classes PdfAValidateOptions/PdfAValidationResult, não as versões generated.pdfa | Use as classes PdfAValidateOptions/PdfAValidationResult exportadas de aspose_pdf para fluxos de trabalho PdfAValidator |
get_extracted() retorna None | extract() nunca foi chamado nessa instância de UnsignedContentAbsorber | Chame extract() antes de get_extracted(), ou verifique has_extracted() primeiro |
As propriedades em generated.document.Document são do tipo Any e não fornecem autocomplete | A superfície gerada troca tipagem estática por um API menor e mais simples | Faça cast ou documente o tipo esperado no local da chamada, ou mude para a classe principal Document para tipagem mais rica |
FAQ
O aspose_pdf.generated é um stub ou placeholder?
Não. É um subpacote real e importável com classes funcionais — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions e PdfAValidationResult — é simplesmente uma superfície menor e independente do que o API principal da biblioteca.
Por que generated.document.Document tem o mesmo nome que aspose_pdf.Document?
São duas classes definidas independentemente que, por acaso, compartilham o mesmo nome. Importar de aspose_pdf.generated.document fornece a versão de compatibilidade; importar aspose_pdf.Document (ou from aspose_pdf import Document) fornece a versão principal.
Posso passar um generated.pdfa.PdfAValidateOptions para PdfAValidator.process()?
Não. PdfAValidator.process() faz parte do API primário e espera a própria classe PdfAValidateOptions do API primário, que tem uma assinatura de método diferente (add_input(source) em vez de um add_input() sem argumentos).
O UnsignedContentAbsorber.extract() precisa de um argumento Document?
Não. extract() não recebe argumentos na superfície de compatibilidade gerada; construa o absorvedor e chame extract() diretamente.
Resumo de API Reference
| Classe / Método | Descrição |
|---|---|
Document.load_from | Carrega um documento a partir de um caminho de arquivo, bytes ou stream |
Document.save | Salva o documento no destino |
Document.optimize | Realiza otimização genérica, opcionalmente comprimindo imagens |
Document.optimize_resources | Otimiza recursos compartilhados, como fontes e imagens |
Document.encrypt | Criptografa o documento com uma única senha |
Document.change_passwords | Altera a senha do documento |
Document.validate | Retorna se o documento é estruturalmente válido |
Document.dispose | Libera os recursos associados ao documento |
UnsignedContent.add_page / remove_page | Adiciona ou remove uma página de um pacote unsigned-content |
UnsignedContent.add_form_field / remove_form_field | Adiciona ou remove um campo de formulário de um pacote unsigned-content |
UnsignedContent.add_annotation / remove_annotation | Adiciona ou remove uma anotação de um pacote unsigned-content |
UnsignedContentAbsorber.extract | Extrai unsigned content para uma instância UnsignedContent |
UnsignedContentAbsorber.get_extracted | Retorna o último UnsignedContent extraído, se houver |
UnsignedContentAbsorber.has_extracted | Reporta se a extração foi realizada |
PdfAValidateOptions.add_input | Registra uma fonte de entrada para validação |
PdfAValidateOptions.set_option / get_options | Define ou lê valores de opções de validação |
PdfAValidationResult.add_error | Adiciona uma mensagem de erro e marca o resultado como inválido |
PdfAValidationResult.to_dict | Retorna uma representação em dicionário do resultado da validação |