Aspose.PDF FOSS for Python Características
Aspose.PDF FOSS para Python Características
Aspose.PDF FOSS para Python es una biblioteca pure-Python para crear, abrir, modificar y guardar documentos PDF. Esta página examina las principales áreas de capacidad y las clases que actúan como sus puntos de entrada. Cada área se cubre en profundidad en su propia página de guía para desarrolladores.
Gestión de documentos y páginas
Document es el objeto raíz para cada operación. Constrúyalo sin argumentos para iniciar un documento nuevo y vacío, o llame a load_from() para leer uno existente desde una ruta, bytes o flujo. document.pages expone el mutable PageCollection, y Page.add_text coloca texto posicionado en una página.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")Extracción de texto y búsqueda
PdfExtractor se vincula a un documento y extrae texto página por página. bind_pdf() abre la fuente, extract_text() realiza la extracción y get_text() devuelve el resultado acumulado.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Para búsqueda y reemplazo posicionados, por fragmento, TextFragmentAbsorber expone objetos TextFragment coincidentes con text_search_options controlando la sensibilidad a mayúsculas y la coincidencia de expresiones regulares.
Renderizado de Página a Imágenes
Document.save_page_as_image renderiza una sola página directamente a un archivo PNG o TIFF con una DPI configurable. Para acceso de bajo nivel, Page.render devuelve un RasterizedPage con datos de píxeles sin procesar a través de get_pixel() y pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Formularios y Campos Interactivos
Los campos AcroForm se gestionan a través de Document.form, una fachada Form. Form.add_text_field() (y sus equivalentes de casilla de verificación, botón de radio, lista y cuadro combinado) crea un nuevo campo asociado a una página y a un rectángulo de widget, devolviendo un Field. Form.fields enumera todos los campos que existen actualmente en el documento.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")Seguridad, Cifrado y Firmas
Document.encrypt protege un documento con una contraseña de usuario (necesaria para abrirlo) y una contraseña de propietario (necesaria para cambiar permisos); decrypt() y change_passwords() gestionan la protección en un documento ya abierto. is_encrypted informa del estado actual.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")La verificación de firmas digitales es manejada por PdfSignature.validate, que devuelve un ValidationResult que describe el estado de confianza y revocación, y SigningUtils proporciona asistentes de firma de certificado y PKCS#7/CAdES.
Cumplimiento de PDF/A y PDF/UA
Document.validate_pdfa ejecuta una comprobación de cumplimiento heurística PDF/A y devuelve un PdfAValidationResult; convert_to_pdfa() intenta remediar el documento hacia ese nivel. validate_pdfua() y auto_tag() proporcionan la comprobación de accesibilidad equivalente y el etiquetado automático del árbol de estructura para PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")Consejos y mejores prácticas
- Modifique el objeto devuelto directamente por
document.pages,page.annotationsodocument.form— las ediciones realizadas en una copia separada de una página o campo no se reflejan cuando llama asave(). PageCollectionestá indexado desde cero en esta vinculación Python (document.pages[0]es la primera página).- Capture
InvalidPasswordExceptionyPdfParseExceptionantes delAsposePdfExceptionmás amplio al llamar aload_from()con entrada no confiable, de modo que pueda reaccionar de manera diferente a una contraseña incorrecta que a un archivo corrupto. - Llame a
document.optimize()ocompress_streams()antes desave()en documentos fuertemente editados para eliminar recursos no utilizados y reducir el tamaño del archivo. - Pase un
PdfLoadLimitslimitado aload_from()al procesar PDFs de una fuente no confiable, para limitar la memoria y el recuento de objetos durante el análisis.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
save() produce un archivo con ediciones sin cambios | Se hicieron ediciones a una copia de página, anotación o campo en lugar del objeto obtenido de document.pages, annotations o form | Modifique el objeto devuelto directamente por esas colecciones |
InvalidPasswordException en load_from() | El documento está protegido con contraseña y no se proporcionó ninguna contraseña, o se proporcionó la incorrecta | Introduce la contraseña correcta: document.load_from(path, password="...") |
validate_pdfa() todavía reporta un error de fuente después de convert_to_pdfa() | No se encontró ningún archivo de fuente coincidente en el font_lookup_directory proporcionado | Agregue la fuente faltante al directorio de búsqueda, o regístrela con FontRepository antes de convertir |
| La imagen renderizada parece vacía | Índice de página incorrecto pasado a save_page_as_image() o render() | pages está indexado desde cero — confirme el índice y verifique si PdfExtractor devuelve texto para esa página |
El campo agregado con Form.add_text_field() no aparece en la página | El rectángulo del widget cae fuera del media_box de la página | Confirme que las coordenadas del rectángulo estén dentro del Page.media_box |
FAQ
¿Depende Aspose.PDF FOSS para Python de un motor PDF comercial?
No. Es un motor PDF puro-Python creado desde cero, publicado bajo la licencia MIT. Sus únicas dependencias en tiempo de ejecución son cryptography y asn1crypto, utilizados para cifrado y verificación de firmas.
¿Puedo crear un PDF desde cero en lugar de abrir uno existente?
Sí. Document() sin argumentos crea un documento vacío en memoria; llama a document.pages.add() para añadir páginas antes de guardar.
¿A qué formatos raster puedo renderizar una página?
Page.render y Document.save_page_as_image generan salida raster PNG o TIFF; el RasterizedPage devuelto también expone datos de píxeles sin procesar a través de get_pixel() y la propiedad pixels.
¿Qué excepción debo capturar para errores específicos del paquete?
Captura AsposePdfException. Cada error específico del paquete — incluyendo el análisis (PdfParseException), la contraseña y el cifrado (PdfSecurityException, InvalidPasswordException), y las fallas de validación (PdfValidationException) — se deriva de él.
¿A dónde voy a continuación?
Comenzando cubre la instalación, el licenciamiento y un primer ejemplo funcional. Esta guía para desarrolladores continúa con temas de gestión de documentos como formularios, archivos adjuntos incrustados, descubrimiento de fuentes y creación de esquemas/marcadores.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
Document | Objeto raíz — crear, cargar, guardar y gestionar un PDF |
Document.pages | El PageCollection mutable del documento |
Document.load_from / Document.save | Leer desde o escribir en una ruta, bytes o flujo |
Document.encrypt / Document.decrypt | Proteger con contraseña o eliminar la protección |
Document.validate_pdfa / Document.convert_to_pdfa | Comprobación heurística de cumplimiento de PDF/A y conversión |
Document.validate_pdfua() / Document.auto_tag | PDF/UA comprobación de accesibilidad y etiquetado automático de la estructura |
Page.add_text | Agregar texto posicionado a una página |
Page.render | Renderizar una página a un RasterizedPage |
PdfExtractor | Extraer texto de la página y archivos adjuntos incrustados |
PdfFileEditor | Concatenar, dividir, insertar y eliminar páginas entre archivos |
Form / Field | AcroForm contenedor y campos de formulario individuales |
PdfSignature / SigningUtils | Validación y creación de firma digital |
AsposePdfException | Clase base para cada excepción específica de paquete |