Convertir presentaciones de PowerPoint a HTML en C++
Acerca de la conversión de PowerPoint a HTML
Usando Aspose.Slides for C++, las aplicaciones y los desarrolladores pueden convertir una presentación de PowerPoint a HTML: PPTX a HTML o PPT a HTML.
Aspose.Slides proporciona muchas opciones (principalmente de la clase HtmlOptions ) que definen el proceso de conversión de PowerPoint a HTML:
- Convertir una presentación completa de PowerPoint a HTML.
- Convertir una diapositiva específica de una presentación de PowerPoint a HTML.
- Convertir los medios de la presentación (imágenes, vídeos, etc.) a HTML.
- Convertir una presentación de PowerPoint a HTML adaptable.
- Convertir una presentación de PowerPoint a HTML con notas del presentador incluidas o excluidas.
- Convertir una presentación de PowerPoint a HTML con comentarios incluidos o excluidos.
- Convertir una presentación de PowerPoint a HTML con fuentes originales o incrustadas.
- Convertir una presentación de PowerPoint a HTML utilizando el nuevo estilo CSS.
Utilizando su propia API, Aspose ha desarrollado conversores gratuitos de presentación a HTML: PPT a HTML, PPTX a HTML, ODP a HTML, etc.
Puede que desee consultar otros convertidores gratuitos de Aspose.
Note
Además de los procesos de conversión descritos aquí, Aspose.Slides también admite estas operaciones de conversión que implican el formato HTML:
Convertir PowerPoint a HTML
Usando Aspose.Slides, puede convertir una presentación completa de PowerPoint a HTML de esta manera:
- Cree una instancia de la Presentation clase.
- Cargue .ppt en la clase Presentation para Convertir PPT a HTML en C++
- Cargue .pptx en la clase Presentation para Convertir PPTX a HTML en C++
- Cargue .odp en la clase Presentation para Convertir ODP a HTML en C++
- Utilice el método Save para guardar el objeto como un archivo HTML.
Este código muestra cómo convertir un PowerPoint a HTML en C++:
// Instanciar un objeto Presentation que representa un archivo de presentación
auto presentation = System::MakeObject<Presentation>(u"Convert_HTML.pptx");
auto htmlOpt = System::MakeObject<HtmlOptions>();
htmlOpt->set_HtmlFormatter(HtmlFormatter::CreateDocumentFormatter(u"", false));
// Guardar la presentación como HTML
presentation->Save(u"ConvertWholePresentationToHTML_out.html", SaveFormat::Html, htmlOpt);
Convertir PowerPoint a HTML adaptable
Aspose.Slides ofrece la clase ResponsiveHtmlController que permite generar archivos HTML adaptables. Este código muestra cómo convertir una presentación de PowerPoint a HTML adaptable en C++:
// Instanciar un objeto Presentation que representa un archivo de presentación
auto presentation = System::MakeObject<Presentation>(u"Convert_HTML.pptx");
auto controller = System::MakeObject<ResponsiveHtmlController>();
auto htmlOptions = System::MakeObject<HtmlOptions>();
htmlOptions->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(controller));
// Guardar la presentación como HTML
presentation->Save(u"ConvertPresentationToResponsiveHTML_out.html", SaveFormat::Html, htmlOptions);
Convertir PowerPoint a HTML con notas
Este código muestra cómo convertir un PowerPoint a HTML con notas en C++:
auto pres = System::MakeObject<Presentation>(u"Presentation.pptx");
auto opt = System::MakeObject<HtmlOptions>();
auto options = opt->get_NotesCommentsLayouting();
options->set_NotesPosition(NotesPositions::BottomFull);
// Saving notes pages
pres->Save(u"Output.html", SaveFormat::Html, opt);
Convertir PowerPoint a HTML con fuentes originales
Aspose.Slides ofrece la clase EmbedAllFontsHtmlController que permite incrustar todas las fuentes de una presentación al convertirla a HTML.
Para evitar que se incrusten determinadas fuentes, puede pasar una matriz de nombres de fuente a un constructor parametrizado de la clase EmbedAllFontsHtmlController. Fuentes populares, como Calibri o Arial, cuando se usan en una presentación, no tienen que incrustarse porque la mayoría de los sistemas ya las contienen. Cuando esas fuentes se incrustan, el documento HTML resultante se vuelve innecesariamente grande.
La clase EmbedAllFontsHtmlController admite herencia y proporciona el método WriteFont que está pensado para ser sobrescrito.
auto pres = System::MakeObject<Presentation>(u"input.pptx");
// exclude default presentation fonts
auto fontNameExcludeList = System::MakeArray<System::String>({ u"Calibri", u"Arial" });
auto embedFontsController = System::MakeObject<EmbedAllFontsHtmlController>(fontNameExcludeList);
auto htmlOptionsEmbed = System::MakeObject<HtmlOptions>();
htmlOptionsEmbed->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(embedFontsController));
pres->Save(u"input-PFDinDisplayPro-Regular-installed.html", SaveFormat::Html, htmlOptionsEmbed);
Convertir PowerPoint a HTML con imágenes de alta calidad
Por defecto, al convertir PowerPoint a HTML, Aspose.Slides genera HTML pequeño con imágenes a 72 DPI y áreas recortadas eliminadas. Para obtener archivos HTML con imágenes de mayor calidad, debe establecer la propiedad PicturesCompression (de la clase HtmlOptions) a 96 (es decir, PicturesCompression::Dpi96) o a valores superiores values.
Este código C++ muestra cómo convertir una presentación de PowerPoint a HTML obteniendo imágenes de alta calidad a 150 DPI (p.ej. PicturesCompression::Dpi150):
auto pres = System::MakeObject<Presentation>(u"InputDoc.pptx");
auto htmlOpts = System::MakeObject<HtmlOptions>();
htmlOpts->set_PicturesCompression(PicturesCompression::Dpi150);
pres->Save(u"OutputDoc-dpi150.html", SaveFormat::Html, htmlOpts);
Este código en C++ muestra cómo generar HTML con imágenes a máxima calidad:
auto pres = System::MakeObject<Presentation>(u"InputDoc.pptx");
auto htmlOpts = System::MakeObject<HtmlOptions>();
htmlOpts->set_DeletePicturesCroppedAreas(false);
pres->Save(u"Outputdoc-noCrop.html", SaveFormat::Html, htmlOpts);
Convertir una diapositiva a HTML
Para convertir una diapositiva específica de un PowerPoint a HTML, debe instanciar la misma clase Presentation (usada para convertir presentaciones completas a HTML) y luego usar el método Save para guardar el archivo como HTML. La clase HtmlOptions puede usarse para especificar opciones de conversión adicionales:
Este código C++ muestra cómo convertir una diapositiva de una presentación de PowerPoint a HTML:
class CustomFormattingController : public IHtmlFormattingController
{
public:
void WriteDocumentStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override{}
void WriteDocumentEnd(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override{}
void WriteSlideStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<ISlide> slide) override
{
generator->AddHtml(String::Format(SlideHeader, generator->get_SlideIndex() + 1));
}
void WriteSlideEnd(SharedPtr<IHtmlGenerator> generator, SharedPtr<ISlide> slide) override
{
generator->AddHtml(SlideFooter);
}
void WriteShapeStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<IShape> shape) override{}
void WriteShapeEnd(SharedPtr<IHtmlGenerator> generator, SharedPtr<IShape> shape) override{}
private:
static const String SlideHeader;
static const String SlideFooter;
};
const String CustomFormattingController::SlideHeader = u"<div class=\"slide\" name=\"slide\" id=\"slide{0}\">";
const String CustomFormattingController::SlideFooter = u"</div>";
void Run()
{
String dataDir = GetDataPath();
auto presentation = System::MakeObject<Presentation>(dataDir + u"Individual-Slide.pptx");
auto formatter = HtmlFormatter::CreateCustomFormatter(MakeObject<CustomFormattingController>();
auto htmlOptions = System::MakeObject<HtmlOptions>();
htmlOptions->set_HtmlFormatter(formatter);
// Guardando archivo
for (int32_t i = 0; i < presentation->get_Slides()->get_Count(); i++)
{
presentation->Save(dataDir + u"Individual Slide" + (i + 1) + u"_out.html",
MakeArray<int32_t>({ i + 1 }), SaveFormat::Html, htmlOptions);
}
}
Guardar CSS e imágenes al exportar a HTML
Utilizando archivos de estilo CSS nuevos, puede cambiar fácilmente el estilo del archivo HTML resultante del proceso de conversión de PowerPoint a HTML.
El código C++ en este ejemplo muestra cómo usar métodos sobrescribibles para crear un documento HTML personalizado con un enlace a un archivo CSS:
class CustomHeaderAndFontsController : public EmbedAllFontsHtmlController
{
public:
CustomHeaderAndFontsController(String cssFileName)
: m_cssFileName(cssFileName)
{
}
void WriteDocumentStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override
{
generator->AddHtml(System::String::Format(Header, m_cssFileName));
WriteAllFonts(generator, presentation);
}
void WriteAllFonts(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override
{
generator->AddHtml(u"<!-- Embedded fonts -->");
EmbedAllFontsHtmlController::WriteAllFonts(generator, presentation);
}
private:
static const String Header;
String m_cssFileName;
};
const String CustomHeaderAndFontsController::Header = String(u"<!DOCTYPE html>\n") +
u"<html>\n" + u"<head>\n" +
u"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">\n" +
u"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n" +
u"<link rel=\"stylesheet\" type=\"text/css\" href=\"{0}\">\n" + u"</head>";
void Run()
{
// La ruta al directorio de documentos.
System::String dataDir = GetDataPath();
auto pres = System::MakeObject<Presentation>(u"pres.pptx");
auto htmlController = System::MakeObject<CustomHeaderAndFontsController>(u"styles.css");
auto options = System::MakeObject<HtmlOptions>();
options->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(htmlController));
pres->Save(u"pres.html", SaveFormat::Html, options);
}
Vincular todas las fuentes al convertir una presentación a HTML
Si no desea incrustar fuentes (para evitar aumentar el tamaño del HTML resultante), puede vincular todas las fuentes implementando su propia versión de LinkAllFontsHtmlController.
Este código C++ muestra cómo convertir un PowerPoint a HTML vinculando todas las fuentes y excluyendo “Calibri” y “Arial” (ya que existen en el sistema):
class LinkAllFontsHtmlController : public EmbedAllFontsHtmlController
{
public:
LinkAllFontsHtmlController(ArrayPtr<String> fontNameExcludeList, String basePath)
: EmbedAllFontsHtmlController(fontNameExcludeList)
{
m_basePath = basePath;
}
void WriteFont(SharedPtr<IHtmlGenerator> generator, SharedPtr<IFontData> originalFont, SharedPtr<IFontData> substitutedFont,
String fontStyle, String fontWeight, ArrayPtr<uint8_t> fontData)
{
String fontName = substitutedFont == nullptr ? originalFont->get_FontName() : substitutedFont->get_FontName();
String path = String::Format(u"{0}.woff", fontName); // puede ser necesario sanitizar la ruta
IO::File::WriteAllBytes(IO::Path::Combine(m_basePath, path), fontData);
generator->AddHtml(u"<style>");
generator->AddHtml(u"@font-face { ");
generator->AddHtml(String::Format(u"font-family: '{0}'; ", fontName));
generator->AddHtml(String::Format(u"src: url('{0}')", path));
generator->AddHtml(u" }");
generator->AddHtml(u"</style>");
}
private:
String m_basePath;
};
void Run()
{
auto pres = System::MakeObject<Presentation>(u"pres.pptx");
// excluir fuentes predeterminadas de la presentación
auto fontNameExcludeList = System::MakeArray<String>({ u"Calibri", u"Arial" });
auto linkcont = System::MakeObject<LinkAllFontsHtmlController>(fontNameExcludeList, u"C://Windows//Fonts//");
System::SharedPtr<HtmlOptions> htmlOptionsEmbed = System::MakeObject<HtmlOptions>();
htmlOptionsEmbed->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(linkcont));
pres->Save(u"pres.html", SaveFormat::Html, htmlOptionsEmbed);
}
Convertir PowerPoint a HTML adaptable
Este código C++ muestra cómo convertir una presentación de PowerPoint a HTML adaptable:
auto presentation = System::MakeObject<Presentation>(u"SomePresentation.pptx");
auto saveOptions = System::MakeObject<HtmlOptions>();
saveOptions->set_SvgResponsiveLayout(true);
presentation->Save(u"SomePresentation-out.html", SaveFormat::Html, saveOptions);
Exportar archivos multimedia a HTML
Usando Aspose.Slides for C++, puede exportar archivos multimedia de esta manera:
- Cree una instancia de la clase Presentation.
- Obtenga una referencia a la diapositiva.
- Añada un vídeo a la diapositiva.
- Guarde la presentación como un archivo HTML.
Este código C++ muestra cómo añadir un vídeo a la presentación y luego guardarla como HTML:
// Carga una presentación
auto pres = System::MakeObject<Presentation>();
const System::String path = u"C:/out/";
const System::String fileName = u"ExportMediaFiles_out.html";
const System::String baseUri = u"http://www.example.com/";
auto fileStream = System::MakeObject<IO::FileStream>(u"my_video.avi", IO::FileMode::Open, IO::FileAccess::Read);
auto video = pres->get_Videos()->AddVideo(fileStream, Aspose::Slides::LoadingStreamBehavior::ReadStreamAndRelease);
auto slide = pres->get_Slides()->idx_get(0);
slide->get_Shapes()->AddVideoFrame(10.0f, 10.0f, 100.0f, 100.0f, video);
auto controller = System::MakeObject<VideoPlayerHtmlController>(path, fileName, baseUri);
// Establece opciones HTML
auto htmlOptions = System::MakeObject<HtmlOptions>(controller);
auto svgOptions = System::MakeObject<SVGOptions>(controller);
htmlOptions->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(controller));
htmlOptions->set_SlideImageFormat(SlideImageFormat::Svg(svgOptions));
// Guarda el archivo
pres->Save(IO::Path::Combine(path, fileName), SaveFormat::Html, htmlOptions);
Preguntas frecuentes
¿Cuál es el rendimiento de Aspose.Slides al convertir múltiples presentaciones a HTML?
El rendimiento depende del tamaño y la complejidad de las presentaciones. Aspose.Slides es altamente eficiente y escalable para operaciones por lotes. Para lograr un rendimiento óptimo al convertir muchas presentaciones, se recomienda usar multihilo o procesamiento paralelo siempre que sea posible.
¿Aspose.Slides admite la exportación de hipervínculos a HTML?
Sí, Aspose.Slides admite plenamente la exportación de hipervínculos incrustados a HTML. Cuando convierte presentaciones al formato HTML, los hipervínculos se conservan automáticamente y permanecen clicables.
¿Existe algún límite en el número de diapositivas al convertir presentaciones a HTML?
No hay límite en el número de diapositivas al usar Aspose.Slides. Puede convertir presentaciones de cualquier tamaño. Sin embargo, para presentaciones con un número muy elevado de diapositivas, el rendimiento puede depender de los recursos disponibles en su servidor o sistema.
