Convertir PowerPoint a PDF en C++

Descripción general

Convertir documentos de PowerPoint a formato PDF ofrece varias ventajas, incluida la garantía de compatibilidad en diferentes dispositivos y la preservación del diseño y formato de su presentación. Este artículo le muestra cómo convertir presentaciones a documentos PDF, utilizar diversas opciones para controlar la calidad de la imagen, incluir diapositivas ocultas, proteger documentos PDF con contraseña, detectar sustituciones de fuentes, seleccionar diapositivas para la conversión y aplicar estándares de conformidad a los documentos de salida.

Conversiones de PowerPoint a PDF

Usando Aspose.Slides, puede convertir presentaciones en estos formatos a PDF:

  • PPT
  • PPTX
  • ODP

Para convertir una presentación a PDF, simplemente debe pasar el nombre del archivo como un argumento en la clase Presentation y luego guardar la presentación como PDF usando un 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 permite convertir:

  • una presentación completa a PDF
  • diapositivas específicas en una presentación a PDF
  • una presentación

Aspose.Slides exporta presentaciones a PDF de tal manera que los contenidos de los PDFs resultantes son muy similares a los de las presentaciones originales. Estos elementos y atributos conocidos suelen renderizarse correctamente en las conversiones de presentación a PDF:

  • imágenes
  • cuadros de texto y otras formas
  • textos y su formato
  • párrafos y su formato
  • hipervínculos
  • encabezados y pies de página
  • viñetas
  • tablas

Convertir PowerPoint a PDF

La operación estándar de conversión de PowerPoint a PDF se ejecuta utilizando opciones predeterminadas. En este caso, Aspose.Slides intenta convertir la presentación proporcionada a PDF usando configuraciones óptimas en los niveles de calidad máximos.

Pasos: Convertir PowerPoint a PDF en C++ | Pasos: Convertir PPT a PDF en C++ | Pasos: Convertir PPTX a PDF en C++ | Pasos: Convertir ODP a PDF en C++

Este código C++ muestra cómo convertir un PowerPoint a PDF:

// Instancia una clase Presentation que representa un archivo de PowerPoint
auto presentation = System::MakeObject<Presentation>(u"PowerPoint.ppt");

// Guarda la presentación como un PDF
presentation->Save(u"PPT-a-PDF.pdf", SaveFormat::Pdf);

Convertir PowerPoint a PDF con opciones

Aspose.Slides proporciona opciones personalizadas—propiedades bajo la clase PdfOptions—que le permiten personalizar el PDF (resultante del proceso de conversión), bloquear el PDF con una contraseña, o incluso especificar cómo debe ir el proceso de conversión.

Convertir PowerPoint a PDF con opciones personalizadas

Usando opciones de conversión personalizadas, puede establecer su configuración de calidad preferida para imágenes rasterizadas, especificar cómo se deben manejar los metafiles, establecer un nivel de compresión para textos, establecer DPI para imágenes, etc.

El ejemplo de código a continuación demuestra una operación en la que se convierte una presentación de PowerPoint a PDF con varias opciones personalizadas:

// Instancia la clase PdfOptions
auto pdfOptions = System::MakeObject<PdfOptions>();

// Establece la calidad para las imágenes JPG
pdfOptions->set_JpegQuality(90);

// Establece DPI para imágenes
pdfOptions->set_SufficientResolution(300);

// Establece el comportamiento para los metafiles
pdfOptions->set_SaveMetafilesAsPng(true);

// Establece el nivel de compresión de texto para contenido textual
pdfOptions->set_TextCompression(PdfTextCompression::Flate);

// Define el modo de conformidad PDF
pdfOptions->set_Compliance(PdfCompliance::Pdf15);

// Instancia la clase Presentation que representa un documento de PowerPoint
auto presentation = System::MakeObject<Presentation>(u"PowerPoint.pptx");

// Guarda la presentación como un documento PDF
presentation->Save(u"PowerPoint-a-PDF.pdf", SaveFormat::Pdf, pdfOptions);

presentation->Dispose();

Convertir PowerPoint a PDF con diapositivas ocultas

Si una presentación contiene diapositivas ocultas, puede usar una opción personalizada—la propiedad ShowHiddenSlides de la clase PdfOptions—para instruir a Aspose.Slides que incluya las diapositivas ocultas como páginas en el PDF resultante.

Este código C++ muestra cómo convertir una presentación de PowerPoint a PDF con diapositivas ocultas incluidas:

// Instancia una clase Presentation que representa un archivo de PowerPoint
auto presentation = System::MakeObject<Presentation>(u"PowerPoint.pptx");

// Instancia la clase PdfOptions
auto pdfOptions = System::MakeObject<PdfOptions>();

// Añade diapositivas ocultas
pdfOptions->set_ShowHiddenSlides(true);

// Guarda la presentación como un PDF
presentation->Save(u"PowerPoint-a-PDF.pdf", SaveFormat::Pdf, pdfOptions);

Convertir PowerPoint a PDF protegido con contraseña

Este código C++ muestra cómo convertir un PowerPoint a un PDF protegido con contraseña (usando parámetros de protección de la clase PdfOptions):

// Instancia un objeto Presentation que representa un archivo de PowerPoint
auto presentation = System::MakeObject<Presentation>(u"PowerPoint.pptx");

/// Instancia la clase PdfOptions
auto pdfOptions = System::MakeObject<PdfOptions>();

// Establece la contraseña PDF y los permisos de acceso
pdfOptions->set_Password(u"contraseña");
pdfOptions->set_AccessPermissions(PdfAccessPermissions::PrintDocument | PdfAccessPermissions::HighQualityPrint);

// Guarda la presentación como un PDF
presentation->Save(u"PPTX-a-PDF.pdf", SaveFormat::Pdf, pdfOptions);

Detectar sustituciones de fuentes

Aspose.Slides proporciona el método get_WarningCallback() bajo la clase SaveOptions para permitirle detectar sustituciones de fuentes en un proceso de conversión de presentación a PDF.

Este código C++ muestra cómo detectar sustituciones de fuentes:

class FontSubstSendsWarningCallback : public Warnings::IWarningCallback
{
public:
    Warnings::ReturnAction Warning(System::SharedPtr<Warnings::IWarningInfo> warning) override;
};

Warnings::ReturnAction FontSubstSendsWarningCallback::Warning(System::SharedPtr<Warnings::IWarningInfo> warning)
{
    if (warning->get_WarningType() == Warnings::WarningType::CompatibilityIssue)
    {
        return Warnings::ReturnAction::Continue;
    }

    if (warning->get_WarningType() == Warnings::WarningType::DataLoss && warning->get_Description().StartsWith(u"La fuente será sustituida"))
    {
        System::Console::WriteLine(u"Advertencia de sustitución de fuente: {0}", warning->get_Description());
    }

    return Warnings::ReturnAction::Continue;
}

y el siguiente código C++ muestra cómo usar la clase anterior:

int main()
{
    System::SharedPtr<LoadOptions> loadOptions = System::MakeObject<LoadOptions>();
    System::SharedPtr<FontSubstSendsWarningCallback> warningCallback = System::MakeObject<FontSubstSendsWarningCallback>();
    loadOptions->set_WarningCallback(warningCallback);

    System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx", loadOptions);
    return 0;
}

Convertir diapositivas seleccionadas en PowerPoint a PDF

Este código C++ muestra cómo convertir diapositivas específicas en una presentación de PowerPoint a PDF:

// Instancia un objeto Presentation que representa un archivo de PowerPoint
auto presentation = System::MakeObject<Presentation>(u"PowerPoint.pptx");

// Establece un array de posiciones de diapositivas
auto slides = System::MakeArray<int32_t>({1, 3});

// Guarda la presentación como un PDF
presentation->Save(u"PPTX-a-PDF.pdf", slides, SaveFormat::Pdf);

Convertir PowerPoint a PDF con tamaño de diapositiva personalizado

Este código C++ muestra cómo convertir un PowerPoint cuando su tamaño de diapositiva está especificado a un PDF:

// La ruta al directorio de documentos.
String dataDir = GetDataPath()

// Instancia un objeto Presentation que representa un archivo de PowerPoint 
auto presentation = System::MakeObject<Presentation>(dataDir + u"SelectedSlides.pptx");
auto auxPresentation = System::MakeObject<Presentation>();

auto slide = presentation->get_Slides()->idx_get(0);

auxPresentation->get_Slides()->InsertClone(0, slide);

// Establece el tipo y tamaño de la diapositiva 
auxPresentation->get_SlideSize()->SetSize(612.F, 792.F, SlideSizeScaleType::EnsureFit);

auto pdfOptions = System::MakeObject<PdfOptions>();
auto options = pdfOptions->get_NotesCommentsLayouting();
options->set_NotesPosition(NotesPositions::BottomFull);

auxPresentation->Save(dataDir + u"PDFnotes_out.pdf", SaveFormat::Pdf, pdfOptions);

Convertir PowerPoint a PDF en vista de notas de diapositiva

Este código C++ muestra cómo convertir un PowerPoint a notas PDF:

// La ruta al directorio de documentos.
System::String dataDir = u"";

// Instancia una clase Presentation que representa un archivo de PowerPoint
auto presentation = System::MakeObject<Presentation>(dataDir + u"NotesFile.pptx");

auto pdfOptions = System::MakeObject<PdfOptions>();
auto options = pdfOptions->get_NotesCommentsLayouting();
options->set_NotesPosition(NotesPositions::BottomFull);

// Guarda la presentación a notas PDF
presentation->Save(dataDir + u"Pdf_Notes_out.tiff", SaveFormat::Pdf, pdfOptions);

Estándares de accesibilidad y conformidad para PDF

Aspose.Slides le permite utilizar un procedimiento de conversión que cumple con las Directrices de Accesibilidad para el Contenido Web (WCAG). Puede exportar un documento de PowerPoint a PDF utilizando cualquiera de estos estándares de conformidad: PDF/A1a, PDF/A1b, y PDF/UA.

Este código C++ demuestra una operación de conversión de PowerPoint a PDF en la que se obtienen múltiples PDFs basados en diferentes estándares de conformidad:

auto pres = System::MakeObject<Presentation>(u"pres.pptx");

auto pdfOptionsA1a = System::MakeObject<PdfOptions>();
pdfOptionsA1a->set_Compliance(PdfCompliance::PdfA1a);
pres->Save(u"pres-a1a-compliance.pdf", SaveFormat::Pdf, pdfOptionsA1a);

auto pdfOptionsA1b = System::MakeObject<PdfOptions>();
pdfOptionsA1b->set_Compliance(PdfCompliance::PdfA1b);
pres->Save(u"pres-a1b-compliance.pdf", SaveFormat::Pdf, pdfOptionsA1b);

auto pdfOptionsUa = System::MakeObject<PdfOptions>();
pdfOptionsUa->set_Compliance(PdfCompliance::PdfUa);
pres->Save(u"pres-ua-compliance.pdf", SaveFormat::Pdf, pdfOptionsUa);