Convertir presentaciones a HTML5 en C++

Visión general

Este artículo explica cómo convertir presentaciones de PowerPoint a HTML5 usando Aspose.Slides for C++. Cubre la exportación básica, el control de animaciones de formas y transiciones de diapositivas, y el diseño de comentarios. También compara la salida HTML5 con la salida basada en SVG de la exportación HTML estándar.

Exportar PowerPoint a HTML5

El siguiente ejemplo carga una presentación desde el directorio de trabajo y la guarda en formato HTML5. Utiliza la configuración de exportación predeterminada; el ejemplo siguiente muestra cómo controlar la reproducción de animaciones de forma explícita. Reemplace la ruta de entrada con la ruta a su presentación.

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"pres.html", SaveFormat::Html5);
presentation->Dispose();

Para exportar sin reproducir animaciones de formas o transiciones de diapositivas, pase false a set_AnimateShapes y set_AnimateTransitions en Html5Options. Estas configuraciones son independientes, por lo que puede habilitar una mientras deshabilita la otra. El ejemplo exporta la presentación con ambos tipos de animación desactivados en la página generada.

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_AnimateShapes(false);
html5Options->set_AnimateTransitions(false);

auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"pres5.html", SaveFormat::Html5, html5Options);
presentation->Dispose();

Exportar PowerPoint a HTML

La exportación HTML estándar utiliza un enfoque de renderizado diferente: el contenido de la diapositiva se representa mediante SVG dentro de una página HTML. El siguiente ejemplo convierte una presentación a un documento HTML usando este enfoque de renderizado.

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"pres.html", SaveFormat::Html);
presentation->Dispose();

El marcado simplificado a continuación ilustra la estructura de la página generada. El elemento SVG contiene el contenido de la diapositiva renderizado; el texto del marcador de posición representa ese contenido y no es la salida literal de la exportación.

<body>
<div class="slide" name="slide" id="slideslideIface1">
     <svg version="1.1">
         <g> THE SLIDE CONTENT GOES HERE </g>
     </svg>
</div>
</body>

Exportar PowerPoint a Vista de Diapositivas HTML5

La exportación HTML5 genera una página para ver y navegar las diapositivas de la presentación en un navegador. Este ejemplo pasa true tanto a set_AnimateShapes como a set_AnimateTransitions para que la vista de diapositivas exportada pueda reproducir los efectos de la presentación original.

Utilice una presentación que ya contenga animaciones de formas y transiciones de diapositivas para ver el efecto de estas configuraciones. Habilitarlas no añade nuevos efectos a las diapositivas que no los tengan. Después de la exportación, abra el documento HTML5 generado en un navegador con sus archivos de soporte disponibles.

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_AnimateShapes(true);
html5Options->set_AnimateTransitions(true);

auto presentation = System::MakeObject<Presentation>(u"pres.pptx");
presentation->Save(u"HTML5-slide-view.html", SaveFormat::Html5, html5Options);
presentation->Dispose();

Convertir una Presentación a un Documento HTML5 con Comentarios

Puede incluir los comentarios de diapositiva existentes en la salida HTML5 para que los lectores vean la retroalimentación junto al contenido de la diapositiva. El ejemplo en esta sección supone que la presentación fuente contiene comentarios, como se ilustra a continuación. Exporta esos comentarios; no crea nuevos.

Dos comentarios en la diapositiva de la presentación

Pase un objeto NotesCommentsLayoutingOptions al método set_SlidesLayoutOptions de Html5Options. Llame a set_CommentsPosition con CommentsPositions::Right de la enumeración CommentsPositions para colocar los comentarios a la derecha de cada diapositiva.

El siguiente ejemplo exporta la presentación a HTML5 con este diseño de comentarios. Una presentación sin comentarios no tendrá texto de comentario para mostrar.

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>
#include <Export/NotesCommentsLayoutingOptions.h>
#include <Export/CommentsPositions.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto layoutOptions = System::MakeObject<NotesCommentsLayoutingOptions>();
layoutOptions->set_CommentsPosition(CommentsPositions::Right);

auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_SlidesLayoutOptions(layoutOptions);

auto presentation = System::MakeObject<Presentation>(u"sample.pptx");
presentation->Save(u"output.html", SaveFormat::Html5, html5Options);
presentation->Dispose();

La imagen a continuación muestra el documento HTML5 exportado con los comentarios mostrados junto a la diapositiva.

Los comentarios en el documento HTML5 de salida

Excluir Hipervínculos JavaScript Durante la Exportación

Supongamos que hyperlinks.pptx contiene texto con un objetivo javascript:alert('Hello') y un enlace ordinario https://example.com/. Para excluir el hipervínculo JavaScript durante la exportación, llame a SaveOptions::set_SkipJavaScriptLinks con true. El valor predeterminado es false, por lo que estos enlaces no se filtran a menos que habilite la opción.

El siguiente ejemplo carga la presentación desde el directorio de trabajo y la exporta usando Html5Options:

#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
#include <Export/Html5Options.h>

using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;

auto html5Options = System::MakeObject<Html5Options>();
html5Options->set_SkipJavaScriptLinks(true);

auto presentation = System::MakeObject<Presentation>(u"hyperlinks.pptx");
presentation->Save(u"filtered-html5.html", SaveFormat::Html5, html5Options);
presentation->Dispose();

El archivo exportado omite el hipervínculo JavaScript mientras conserva su texto y el enlace HTTPS ordinario. La presentación fuente permanece sin cambios.

Esta opción filtra los hipervínculos JavaScript; no elimina todos los scripts u otro contenido activo, ni garantiza el cumplimiento de CSP. Por ejemplo, la salida HTML5 aún incluye scripts para la navegación y animaciones de diapositivas.

Preguntas frecuentes

¿Puedo controlar si las animaciones de objetos y las transiciones de diapositivas se reproducirán en HTML5?

Sí, la exportación HTML5 ofrece opciones independientes para habilitar o deshabilitar animaciones de formas y transiciones de diapositivas.

¿Se admiten los comentarios y dónde se pueden colocar respecto a la diapositiva?

Sí, los comentarios existentes pueden incluirse en la salida HTML5 y posicionarse (por ejemplo, a la derecha de la diapositiva) mediante los ajustes de diseño para notas y comentarios.

¿Puedo omitir enlaces que invoquen JavaScript por motivos de seguridad o CSP?

Sí, el método set_SkipJavaScriptLinks le permite omitir los hipervínculos con llamadas a JavaScript durante el guardado. El valor predeterminado es false. Consulte Exclude JavaScript Hyperlinks During Export para un ejemplo de exportación HTML5 y el alcance del filtro. Esta configuración no elimina el JavaScript utilizado por el visor HTML5 para la navegación y las animaciones.