Trabajando con la Compatibilidad Generada API
Trabajando con la Compatibilidad Generada API
Aspose.PDF FOSS para Python envía una segunda, más pequeña superficie API bajo el subpaquete aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent y UnsignedContentAbsorber, y generated.pdfa.PdfAValidateOptions y PdfAValidationResult. Cada una de estas clases comparte su nombre con una clase en el API principal de la biblioteca (aspose_pdf.Document, aspose_pdf.UnsignedContent, etc.), pero son clases separadas, definidas de forma independiente, con una superficie de métodos reducida. Existen como una capa de compatibilidad independiente — siempre impórtalas mediante su ruta completa aspose_pdf.generated.* para que sepas cuál estás llamando.
Ciclo de vida del documento mediante el Document generado
generated.document.Document admite el ciclo de vida central del documento: carga, guardado, optimización básica, cifrado y validación. La mayoría de sus propiedades están tipadas como Any en lugar de los tipos más ricos expuestos en la clase 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()El cifrado y los cambios de contraseña usan un formulario de contraseña única en lugar de las contraseñas separadas de usuario/propietario del 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")Extrayendo contenido no firmado
generated.forms.UnsignedContentAbsorber extrae las páginas, campos de formulario y anotaciones de un documento que aún no han sido firmados en un contenedor UnsignedContent. Llama a extract() para ejecutar la extracción, luego a get_extracted() o has_extracted() para comprobar el resultado sin volver a ejecutarla.
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 también puede construirse y rellenarse directamente, independiente de un absorbente:
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()Opciones de validación y resultados de PDF/A
generated.pdfa.PdfAValidateOptions y PdfAValidationResult son un par independiente de opción/resultado para flujos de trabajo de validación al estilo PDF/A. No son las clases devueltas por el Document.validate_pdfa() del API principal ni consumidas por PdfAValidator.process() — esas utilizan sus propias clases PdfAValidateOptions y PdfAValidationResult, definidas por separado, con una superficie más rica (level, warnings, is_heuristic y un 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_validConsejos y Mejores Prácticas
- Importa cada clase
generateda través de su ruta completa de submódulo (from aspose_pdf.generated.document import Document, y de manera similar paragenerated.formsygenerated.pdfa) — nunca asumas que una importación simple deDocumentoUnsignedContentse resuelve a la versión de compatibilidad. - Asigna a la clase importada un nombre local distintivo siempre que un archivo también utilice el API principal en el mismo módulo, de modo que ambas superficies permanezcan visiblemente separadas en cada sitio de llamada.
- Trata
generated.pdfa.PdfAValidateOptions/PdfAValidationResultcomo un par autónomo: construye las opciones, ejecuta tu propia lógica de validación y registra los hallazgos conadd_error()tú mismo — no se rellenan automáticamente medianteDocument.validate_pdfa(). - Verifica
UnsignedContentAbsorber.has_extracted()antes de llamar aget_extracted()si no estás seguro de queextract()ya se haya ejecutado. - Prefiere el
aspose_pdf.DocumentAPI principal para el código nuevo, a menos que necesites específicamente la superficie reducida de compatibilidad generada.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
Métodos Document incorrectos disponibles (faltan pages, form, xmp_metadata y similares) | Se importó generated.document.Document en lugar del aspose_pdf.Document principal | Importe la clase principal (import aspose_pdf; aspose_pdf.Document()) a menos que la superficie reducida sea lo que pretende |
PdfAValidateOptions/PdfAValidationResult de generated.pdfa no funcionan con PdfAValidator.process() | El PdfAValidator del API principal espera sus propias clases PdfAValidateOptions/PdfAValidationResult, no las versiones generated.pdfa | Utiliza las clases PdfAValidateOptions/PdfAValidationResult exportadas desde aspose_pdf para flujos de trabajo PdfAValidator |
get_extracted() devuelve None | extract() nunca se llamó en esa instancia de UnsignedContentAbsorber | Llama a extract() antes de get_extracted(), o verifica has_extracted() primero |
Las propiedades en generated.document.Document están tipadas Any y no ofrecen autocompletado | La superficie generada intercambia tipado estático por un API más pequeño y sencillo | Haz un casting o documenta el tipo esperado en el sitio de llamada, o cambia a la clase principal Document para un tipado más rico |
FAQ
¿Es aspose_pdf.generated un stub o un marcador de posición?
No. Es un subpaquete real e importable con clases funcionales — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions y PdfAValidationResult — simplemente es una superficie más pequeña e independiente que el API principal de la biblioteca.
¿Por qué generated.document.Document tiene el mismo nombre que aspose_pdf.Document?
Son dos clases definidas de forma independiente que coinciden en el nombre. Importar desde aspose_pdf.generated.document te proporciona la versión de compatibilidad; importar aspose_pdf.Document (o from aspose_pdf import Document) te proporciona la versión principal.
¿Puedo pasar un generated.pdfa.PdfAValidateOptions a PdfAValidator.process()?
No. PdfAValidator.process() es parte del API principal y espera la propia clase PdfAValidateOptions del API principal, que tiene una firma de método diferente (add_input(source) en lugar de un add_input() sin argumentos).
¿Necesita UnsignedContentAbsorber.extract() un argumento Document?
No. extract() no recibe argumentos en la superficie de compatibilidad generada; construya el absorbente y llame a extract() directamente.
API Reference Resumen
| Clase / Método | Descripción |
|---|---|
Document.load_from | Carga un documento desde una ruta de archivo, bytes o flujo |
Document.save | Guarda el documento en un destino |
Document.optimize | Realiza una optimización genérica, opcionalmente comprimiendo imágenes |
Document.optimize_resources | Optimiza recursos compartidos como fuentes e imágenes |
Document.encrypt | Encripta el documento con una sola contraseña |
Document.change_passwords | Cambia la contraseña del documento |
Document.validate | Devuelve si el documento es estructuralmente válido |
Document.dispose | Libera los recursos asociados al documento |
UnsignedContent.add_page / remove_page | Agrega o elimina una página de un paquete unsigned-content |
UnsignedContent.add_form_field / remove_form_field | Agrega o elimina un campo de formulario de un paquete unsigned-content |
UnsignedContent.add_annotation / remove_annotation | Agrega o elimina una anotación de un paquete unsigned-content |
UnsignedContentAbsorber.extract | Extrae contenido unsigned en una instancia UnsignedContent |
UnsignedContentAbsorber.get_extracted | Devuelve el último UnsignedContent extraído, si lo hay |
UnsignedContentAbsorber.has_extracted | Informa si se ha realizado la extracción |
PdfAValidateOptions.add_input | Registra una fuente de entrada para validación |
PdfAValidateOptions.set_option / get_options | Establece o lee los valores de opciones de validación |
PdfAValidationResult.add_error | Añade un mensaje de error y marca el resultado como inválido |
PdfAValidationResult.to_dict | Devuelve una representación de diccionario del resultado de validación |