Convertir PPT y PPTX a PDF en Python mediante Java [Incluidas funciones avanzadas]

Visió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 su presentación. Esta guía muestra cómo convertir presentaciones a documentos PDF, utilizar diversas opciones para controlar la calidad de la imagen, 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, puede convertir presentaciones en los siguientes formatos a PDF:

  • PPT
  • PPTX
  • ODP

Para convertir una presentación a PDF, pase el nombre del archivo como argumento a la clase Presentation y luego guarde la presentación como PDF usando el método save. La clase Presentation expone el método save que se utiliza típicamente para convertir una presentación a PDF.

Aspose.Slides le permite convertir:

  • Presentaciones completas a PDF
  • Diapositivas específicas de una presentación a PDF

Aspose.Slides exporta presentaciones a PDF, asegurando que los PDF resultantes coincidan estrechamente con las presentaciones originales. Los elementos y atributos se renderizan con precisión en la conversión, incluyendo:

  • 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 utiliza la configuración de exportación PDF predeterminada. Use opciones personalizadas cuando necesite controlar la calidad de la imagen, el contenido de la página o el cumplimiento de PDF.

Instale Aspose.Slides for Python via Java y un entorno de ejecución Java compatible antes de ejecutar los ejemplos. Cada ejemplo lee presentation.pptx del directorio de trabajo actual; reemplácelo con su archivo PPT, PPTX o ODP. Inicie la JVM una vez por proceso de Python.

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()

Convertir PowerPoint a PDF con Opciones

Aspose.Slides proporciona opciones personalizadas—propiedades bajo la clase PdfOptions—que le 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

Usando opciones de conversión personalizadas, puede definir su configuración de calidad preferida para imágenes raster, especificar cómo deben manejarse 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 la calidad JPEG ajustada a 90, resolución de imagen establecida en 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()

Conservar Archivos OLE Incrustados como Adjuntos PDF

Si una presentación contiene un libro de Excel incrustado, puede querer que los destinatarios del PDF accedan a los datos del libro así como vean las diapositivas. Llame 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 ícono del objeto OLE se renderiza en la página PDF, pero su archivo incrustado no se incluye como adjunto. Establecer la opción a True incluye adicionalmente los datos del archivo. La vista previa sigue siendo una representación visual; el adjunto permite a los destinatarios abrir o guardar el archivo incrustado por separado. El objeto OLE no se convierte en una hoja de cálculo Excel interactiva en la página PDF.

El siguiente ejemplo carga una presentación que ya contiene un libro de Excel incrustado y lo exporta a PDF con el libro adjunto.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpime.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:

  1. Abra el PDF exportado en un visor que admita archivos adjuntos, como Adobe Acrobat Reader.
  2. Abra el panel Attachments del visor y localice el libro incrustado.
  3. Guarde el adjunto y ábralo en Excel para inspeccionar sus datos, o ábralo directamente si el visor lo permite. La vista previa en la página PDF es independiente del adjunto.

Convertir PowerPoint a PDF con Diapositivas Ocultas

Si una presentación contiene diapositivas ocultas, puede 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 imprimir, 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 le 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 se sustituye durante la exportación. Use un proxy JPype para recibir callbacks de advertencia desde la API Java. Convierta 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()

Convertir Diapositivas Seleccionadas de PowerPoint a PDF

Los números de diapositiva pasados a Presentation.save son indexados a partir de 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 por 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 encaje.

import jpype
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 Diapositiva de Notas

El siguiente ejemplo exporta una presentación a PDF, colocando las notas del orador de cada diapositiva debajo de la diapositiva. Use 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()

Normas de Accesibilidad y Cumplimiento para PDF

Al preparar PDFs accesibles, consulte las Directrices de Accesibilidad del Contenido Web (WCAG). Use PdfOptions.setCompliance para seleccionar un estándar 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()

Nota: Al exportar 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 toda la figura.

Preguntas frecuentes

¿Puedo convertir varios archivos PowerPoint a PDF en lote?

Sí, Aspose.Slides admite la conversión por lotes de varios archivos PPT o PPTX a PDF. Puede iterar sobre sus archivos y aplicar el proceso de conversión programáticamente.

¿Es posible proteger con contraseña el PDF convertido?

Sí. Utilice la clase PdfOptions para establecer una contraseña y definir los permisos de acceso durante el proceso de conversión.

¿Cómo incluyo diapositivas ocultas en el PDF?

Llame 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í, puede controlar la calidad de la imagen utilizando métodos como setJpegQuality y setSufficientResolution en la clase PdfOptions para garantizar imágenes de alta calidad en su PDF.

¿Aspose.Slides admite normas de cumplimiento PDF/A?

Sí, Aspose.Slides le permite exportar PDFs que cumplen con varias normas, incluidas PDF/A1a, PDF/A1b y PDF/UA, para accesibilidad o archivado. Elija la norma adecuada y revise la salida según sus requisitos.

Recursos adicionales