Convertir PPT y PPTX a PDF en Python mediante Java [Funciones avanzadas incluidas]
Descripción general
Convertir presentaciones de PowerPoint (PPT, PPTX, ODP, etc.) a formato PDF en Python mediante Java ofrece varias ventajas, incluida la compatibilidad entre diferentes dispositivos y la preservación del diseño y formato de tu presentación. Esta guía muestra cómo convertir presentaciones a documentos PDF, usar diversas opciones para controlar la calidad de las imágenes, incluir diapositivas ocultas, proteger con contraseña los archivos PDF, detectar sustituciones de fuentes, seleccionar diapositivas específicas para la conversión y aplicar normas de cumplimiento a los documentos de salida.
Conversiones de PowerPoint a PDF
Con Aspose.Slides, puedes convertir presentaciones en los siguientes formatos a PDF:
- PPT
- PPTX
- ODP
Para convertir una presentación a PDF, pasa el nombre del archivo como argumento a la clase Presentation y luego guarda la presentación como PDF usando el método save. La clase Presentation expone el método save que se utiliza habitualmente para convertir una presentación a PDF.
Note
Aspose.Slides for Python via Java inserta la información de su API y el número de versión en los documentos de salida. Por ejemplo, al convertir una presentación a PDF, Aspose.Slides rellena el campo Application con “Aspose.Slides” y el campo PDF Producer con un valor del tipo “Aspose.Slides v XX.XX”. Note que no puedes instruir a Aspose.Slides para cambiar o eliminar esta información de los documentos de salida.Aspose.Slides te permite convertir:
- Presentaciones completas a PDF
- Diapositivas específicas de una presentación a PDF
Aspose.Slides exporta presentaciones a PDF, garantizando que los PDF resultantes coincidan estrechamente con las presentaciones originales. Los elementos y atributos se renderizan con precisión en la conversión, incluidos:
- Imágenes
- Cuadros de texto y formas
- Formato de texto
- Formato de párrafo
- Hipervínculos
- Cabeceras y pies de página
- Viñetas
- Tablas
Convertir PowerPoint a PDF
La conversión estándar usa la configuración de exportación PDF predeterminada. Usa opciones personalizadas cuando necesites controlar la calidad de la imagen, el contenido de la página o el cumplimiento del PDF.
El siguiente ejemplo carga una presentación y guarda todas las diapositivas visibles en PDF usando la configuración de exportación predeterminada.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation.pdf", SaveFormat.Pdf)
finally:
presentation.dispose()
Note
Aspose ofrece un PowerPoint to PDF converter gratuito en línea que muestra el proceso de conversión de presentación a PDF. Puedes probar este conversor para una implementación práctica del procedimiento descrito aquí.Convertir PowerPoint a PDF con opciones
Aspose.Slides proporciona opciones personalizadas—propiedades bajo la clase PdfOptions—que te permiten personalizar el PDF resultante, bloquear el PDF con una contraseña o especificar cómo debe proceder el proceso de conversión.
Convertir PowerPoint a PDF con opciones personalizadas
Con opciones de conversión personalizadas, puedes definir tu configuración de calidad preferida para imágenes raster, especificar cómo se deben manejar los metarchivos, establecer un nivel de compresión para el texto, configurar DPI para las imágenes y más.
El siguiente ejemplo exporta una presentación a PDF 1.5 con calidad JPEG establecida en 90, resolución de imagen a 300 DPI, metarchivos guardados como PNG y compresión de texto Flate.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfCompliance, PdfOptions, PdfTextCompression, Presentation, SaveFormat
pdf_options = PdfOptions()
pdf_options.setJpegQuality(jpype.JByte(90))
pdf_options.setSufficientResolution(300)
pdf_options.setSaveMetafilesAsPng(True)
pdf_options.setTextCompression(PdfTextCompression.Flate)
pdf_options.setCompliance(PdfCompliance.Pdf15)
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation-custom.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Selección automática de compresión de imágenes
Cuando una presentación contiene muchas fotografías o capturas de pantalla, reducir el tamaño del PDF exportado puede facilitar su envío por correo electrónico o su descarga. Llama a PdfOptions.setBestImagesCompressionRatio con True para seleccionar automáticamente el algoritmo de compresión más adecuado para cada imagen durante la exportación a PDF.
El siguiente ejemplo carga una presentación existente, habilita la selección automática de compresión de imágenes y la guarda como documento PDF. Todas las demás configuraciones de exportación PDF conservan sus valores predeterminados.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfOptions, Presentation, SaveFormat
pdf_options = PdfOptions()
pdf_options.setBestImagesCompressionRatio(True)
presentation = Presentation("image-heavy.pptx")
try:
presentation.save("image-heavy.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Esta opción selecciona un algoritmo de compresión para cada imagen. Reducir el valor pasado a setJpegQuality disminuye la calidad JPEG, mientras que reducir el valor pasado a setSufficientResolution permite que las imágenes se reduzcan a una resolución inferior, lo que puede disminuir el detalle. Habilitar la selección automática de compresión no reduce por sí misma ninguno de estos ajustes.
Seleccionar algoritmos de compresión de imágenes requiere tiempo de procesamiento y memoria adicionales. La reducción de tamaño depende de las imágenes de la presentación y de la configuración de exportación; no se garantiza una reducción fija para cada presentación.
Conservar archivos OLE incrustados como adjuntos PDF
Si una presentación contiene un libro de Excel incrustado, puede que desees que los destinatarios del PDF accedan a los datos del libro además de ver las diapositivas. Llama a setIncludeOleData con True para conservar los archivos OLE incrustados como adjuntos en el PDF resultante.
El valor predeterminado es False: la imagen de vista previa o el icono del objeto OLE se renderiza en la página PDF, pero su archivo incrustado no se incluye como adjunto. Configurar la opción a True incluye además los datos del archivo. La vista previa sigue siendo una representación visual; el adjunto permite que los destinatarios abran o guarden el archivo incrustado por separado. El objeto OLE no se convierte en una hoja de cálculo interactiva en la página PDF.
El siguiente ejemplo carga una presentación que ya contiene un libro de Excel incrustado y la exporta a PDF con el libro adjunto.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfOptions, Presentation, SaveFormat
pdf_options = PdfOptions()
pdf_options.setIncludeOleData(True)
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Para comprobar el resultado:
- Abre el PDF exportado en un visor que admita adjuntos, como Adobe Acrobat Reader.
- Abre el panel Attachments del visor y localiza el libro incrustado.
- Guarda el adjunto y ábrelo en Excel para inspeccionar sus datos, o ábrelo directamente si el visor lo permite. La vista previa en la página PDF es independiente del adjunto.
Note
Las normas PDF/A imponen restricciones sobre los adjuntos: PDF/A‑1 prohíbe archivos incrustados, PDF/A‑2 permite solo adjuntos PDF/A y PDF/A‑3 permite otros tipos de archivo, incluidos libros de Excel. Estas son exigencias de las normas, no restricciones específicas de Aspose.Slides. Este ejemplo usa la configuración de cumplimiento PDF predeterminada y no muestra la exportación PDF/A.Convertir PowerPoint a PDF con diapositivas ocultas
Si una presentación contiene diapositivas ocultas, puedes usar el método setShowHiddenSlides de la clase PdfOptions para incluir las diapositivas ocultas como páginas en el PDF resultante.
El siguiente ejemplo exporta una presentación a PDF, incluyendo cualquier diapositiva oculta.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfOptions, Presentation, SaveFormat
pdf_options = PdfOptions()
pdf_options.setShowHiddenSlides(True)
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation-hidden-slides.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Convertir PowerPoint a un PDF protegido con contraseña
El siguiente ejemplo exporta una presentación a un PDF que requiere la contraseña password para abrirse. Los permisos de acceso permiten la impresión, incluida la impresión de alta calidad.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfAccessPermissions, PdfOptions, Presentation, SaveFormat
pdf_options = PdfOptions()
pdf_options.setPassword("password")
pdf_options.setAccessPermissions(PdfAccessPermissions.PrintDocument | PdfAccessPermissions.HighQualityPrint)
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation-protected.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Detectar sustituciones de fuentes
Aspose.Slides proporciona el método setWarningCallback bajo la clase PdfOptions, lo que permite detectar sustituciones de fuentes durante el proceso de conversión de presentación a PDF.
El siguiente ejemplo exporta una presentación a PDF e imprime advertencias de sustitución de fuentes en la consola. Se imprime una advertencia solo cuando una fuente no disponible es sustituida durante la exportación. Usa un proxy JPype para recibir callbacks de advertencia desde la API Java. Convierte la cadena de descripción Java a una cadena Python antes de comprobar su prefijo:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfOptions, Presentation, ReturnAction, SaveFormat, WarningType
class FontSubstitutionHandler:
def warning(self, warning):
description = str(warning.getDescription())
if warning.getWarningType() == WarningType.DataLoss and description.startswith("Font will be substituted"):
print(f"Font substitution warning: {description}")
return ReturnAction.Continue
handler = FontSubstitutionHandler()
callback = jpype.JProxy("com.aspose.slides.IWarningCallback", inst=handler)
pdf_options = PdfOptions()
pdf_options.setWarningCallback(callback)
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation-font-warnings.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Note
Para obtener más información sobre sustitución de fuentes, consulta el artículo Font Substitution.Gestionar fuentes sin un estilo de negrita dedicado
Una presentación puede aplicar formato en negrita a un texto aunque su fuente no tenga un estilo de negrita dedicado. El texto puede aparecer en negrita mediante “synthetic bolding”, que engrosa artificialmente los glifos normales. Cuando ese texto se ve demasiado grueso o difiere del aspecto esperado en el PDF, prueba a llamar a PdfOptions.setRasterizeUnsupportedFontStyles con True. Esta opción renderiza el texto afectado como un mapa de bits durante la exportación a PDF y puede mejorar su apariencia para determinadas fuentes. Su valor predeterminado es False.
La presentación de ejemplo contiene dos cuadros de texto: uno con texto normal y otro con formato en negrita aplicado a la misma fuente, que no tiene un estilo de negrita dedicado. El siguiente ejemplo carga la presentación, habilita la rasterización de estilos de fuente no compatibles y la exporta a PDF:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfOptions, Presentation, SaveFormat
pdf_options = PdfOptions()
pdf_options.setRasterizeUnsupportedFontStyles(True)
presentation = Presentation("unsupported-bold.pptx")
try:
presentation.save("rasterized.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Las siguientes vistas previas muestran la salida desactivada y la salida activada. En este ejemplo, el texto en negrita tiene trazos más gruesos con la opción desactivada. Con la opción activada, sus trazos son más ligeros; el texto normal permanece sin cambios. Compara los resultados antes de elegir la configuración para tu presentación.
Opción desactivada (False, predeterminada) |
Opción activada (True) |
|---|---|
![]() |
![]() |
En este ejemplo, activar la opción convierte solo el texto en negrita en un mapa de bits: no puede seleccionarse, copiarse ni buscarse como texto sin OCR, y sus bordes aparecen más suaves al 800 % de zoom. El texto normal sigue siendo buscable. Con la opción desactivada, ambas cadenas permanecen como texto.
Esta opción rasteriza el texto formateado como negrita cuando su fuente no tiene un estilo de negrita dedicado. Font substitution en su lugar selecciona otra fuente cuando la original no está disponible.
Convertir diapositivas seleccionadas de PowerPoint a PDF
Los números de diapositiva pasados a Presentation.save son basados en 1. Este ejemplo exporta las diapositivas 1 y 3 cuando ambas existen:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
slide_numbers = jpype.JArray(jpype.JInt)([1, 3])
presentation.save("presentation-selected-slides.pdf", slide_numbers, SaveFormat.Pdf)
finally:
presentation.dispose()
Convertir PowerPoint a PDF con tamaño de diapositiva personalizado
Este ejemplo exporta la primera diapositiva en una página de 612 × 792 puntos (US Letter). Clona la diapositiva en una nueva presentación con el tamaño especificado y escala el contenido de la diapositiva para que se ajuste.
import jpime
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideSizeScaleType
presentation = Presentation("presentation.pptx")
resized_presentation = Presentation()
try:
resized_presentation.getSlideSize().setSize(612, 792, SlideSizeScaleType.EnsureFit)
slide = presentation.getSlides().get_Item(0)
resized_presentation.getSlides().insertClone(0, slide)
# Eliminar la diapositiva en blanco con la que se creó la nueva presentación.
resized_presentation.getSlides().removeAt(1)
resized_presentation.save("presentation-custom-size.pdf", SaveFormat.Pdf)
finally:
presentation.dispose()
resized_presentation.dispose()
Convertir PowerPoint a PDF en vista de notas de diapositiva
El siguiente ejemplo exporta una presentación a PDF, colocando las notas del orador de cada diapositiva debajo de la misma. Usa una presentación que contenga notas del orador para ver el resultado.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import NotesCommentsLayoutingOptions, NotesPositions, PdfOptions, Presentation, SaveFormat
notes_options = NotesCommentsLayoutingOptions()
notes_options.setNotesPosition(NotesPositions.BottomFull)
pdf_options = PdfOptions()
pdf_options.setSlidesLayoutOptions(notes_options)
presentation = Presentation("presentation.pptx")
try:
presentation.save("presentation-with-notes.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Accesibilidad y normas de cumplimiento para PDF
Al crear PDFs accesibles, consulta las Web Content Accessibility Guidelines (WCAG). Usa PdfOptions.setCompliance para seleccionar una norma de salida: PDF/A1a, PDF/A1b y PDF/UA.
Este código muestra un proceso de conversión de PowerPoint a PDF que produce varios PDFs basados en diferentes normas de cumplimiento:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PdfCompliance, PdfOptions, Presentation, SaveFormat
presentation = Presentation("presentation.pptx")
try:
pdf_options = PdfOptions()
pdf_options.setCompliance(PdfCompliance.PdfA1a)
presentation.save("presentation-a1a.pdf", SaveFormat.Pdf, pdf_options)
pdf_options.setCompliance(PdfCompliance.PdfA1b)
presentation.save("presentation-a1b.pdf", SaveFormat.Pdf, pdf_options)
pdf_options.setCompliance(PdfCompliance.PdfUa)
presentation.save("presentation-ua.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
Note: Cuando se exporta a PDF/UA, Aspose.Slides trata los gráficos complejos como SmartArt, gráficos y fórmulas como una única figura. Los elementos de ruta individuales no se conservan como contenido separado y pueden marcarse como artefactos; el texto alternativo se proporciona solo para la figura completa.
FAQ
¿Puedo convertir varios archivos de PowerPoint a PDF en lote?
Sí, Aspose.Slides admite la conversión por lotes de varios archivos PPT o PPTX a PDF. Puedes iterar sobre tus archivos y aplicar el proceso de conversión programáticamente.
¿Es posible proteger con contraseña el PDF convertido?
Sí. Usa la clase PdfOptions para establecer una contraseña y definir permisos de acceso durante el proceso de conversión.
¿Cómo incluyo diapositivas ocultas en el PDF?
Llama a setShowHiddenSlides con True en la clase PdfOptions para incluir diapositivas ocultas en el PDF resultante.
¿Puede Aspose.Slides mantener alta calidad de imagen en el PDF?
Sí, puedes controlar la calidad de la imagen usando métodos como setJpegQuality y setSufficientResolution en la clase PdfOptions para garantizar imágenes de alta calidad en tu PDF.
¿Aspose.Slides admite normas de cumplimiento PDF/A?
Sí, Aspose.Slides te permite exportar PDFs que cumplen con varias normas, incluidas PDF/A1a, PDF/A1b y PDF/UA, para accesibilidad o archivado. Elige la norma apropiada y revisa la salida según tus requisitos.

