Trabalhando com a Compatibilidade Gerada API

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_valid

Dicas e Melhores Práticas

  • Importe cada classe generated através de seu caminho completo de submódulo (from aspose_pdf.generated.document import Document, e de forma semelhante para generated.forms e generated.pdfa) — nunca presuma que uma importação simples de Document ou UnsignedContent resolva 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/PdfAValidationResult como um par autônomo: construa as opções, execute sua própria lógica de validação e registre as descobertas com add_error() você mesmo — elas não são preenchidas automaticamente por Document.validate_pdfa().
  • Verifique UnsignedContentAbsorber.has_extracted() antes de chamar get_extracted() se não tiver certeza de que extract() já foi executado.
  • Prefira o aspose_pdf.Document API principal para novo código, a menos que você precise especificamente da superfície reduzida de compatibilidade gerada.

Problemas Comuns

ProblemaCausaCorreção
Métodos Document errados disponíveis (faltando pages, form, xmp_metadata e similares)Importado generated.document.Document em vez do aspose_pdf.Document principalImporte 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.pdfaUse as classes PdfAValidateOptions/PdfAValidationResult exportadas de aspose_pdf para fluxos de trabalho PdfAValidator
get_extracted() retorna Noneextract() nunca foi chamado nessa instância de UnsignedContentAbsorberChame 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 autocompleteA superfície gerada troca tipagem estática por um API menor e mais simplesFaç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étodoDescrição
Document.load_fromCarrega um documento a partir de um caminho de arquivo, bytes ou stream
Document.saveSalva o documento no destino
Document.optimizeRealiza otimização genérica, opcionalmente comprimindo imagens
Document.optimize_resourcesOtimiza recursos compartilhados, como fontes e imagens
Document.encryptCriptografa o documento com uma única senha
Document.change_passwordsAltera a senha do documento
Document.validateRetorna se o documento é estruturalmente válido
Document.disposeLibera os recursos associados ao documento
UnsignedContent.add_page / remove_pageAdiciona ou remove uma página de um pacote unsigned-content
UnsignedContent.add_form_field / remove_form_fieldAdiciona ou remove um campo de formulário de um pacote unsigned-content
UnsignedContent.add_annotation / remove_annotationAdiciona ou remove uma anotação de um pacote unsigned-content
UnsignedContentAbsorber.extractExtrai unsigned content para uma instância UnsignedContent
UnsignedContentAbsorber.get_extractedRetorna o último UnsignedContent extraído, se houver
UnsignedContentAbsorber.has_extractedReporta se a extração foi realizada
PdfAValidateOptions.add_inputRegistra uma fonte de entrada para validação
PdfAValidateOptions.set_option / get_optionsDefine ou lê valores de opções de validação
PdfAValidationResult.add_errorAdiciona uma mensagem de erro e marca o resultado como inválido
PdfAValidationResult.to_dictRetorna uma representação em dicionário do resultado da validação

Ver também

 Português