Convertir presentaciones de PowerPoint a HTML en Android

Visión general

Este artículo explica cómo convertir una presentación de PowerPoint al formato HTML usando Java. Cubre los siguientes temas.

  • Convertir PowerPoint a HTML en Java
  • Convertir PPT a HTML en Java
  • Convertir PPTX a HTML en Java
  • Convertir ODP a HTML en Java
  • Convertir diapositiva de PowerPoint a HTML en Java

PowerPoint a HTML en Android

Para obtener código de ejemplo en Java que convierta PowerPoint a HTML, consulte la sección a continuación, es decir, Convertir PowerPoint a HTML. El código puede cargar varios formatos como PPT, PPTX y ODP en el objeto Presentation y guardarlo en formato HTML.

Acerca de la conversión de PowerPoint a HTML

Con Aspose.Slides for Android vía Java, las aplicaciones y los desarrolladores pueden convertir una presentación de PowerPoint a HTML: PPTX a HTML o PPT a HTML.

Aspose.Slides ofrece 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, videos, etc.) a HTML.
  • Convertir una presentación de PowerPoint a HTML responsive.
  • 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 usando el nuevo estilo CSS.

Convertir PowerPoint a HTML

Con Aspose.Slides, puede convertir una presentación completa de PowerPoint a HTML de esta forma:

  1. Cree una instancia de la clase Presentation .
  2. 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 Java:

// Instanciar un objeto Presentation que representa un archivo de presentación
Presentation pres = new Presentation("Convert_HTML.pptx");
try {
	HtmlOptions htmlOpt = new HtmlOptions();
	
	htmlOpt.getNotesCommentsLayouting().setNotesPosition(NotesPositions.BottomFull);
	
	htmlOpt.setHtmlFormatter(HtmlFormatter.createDocumentFormatter("", false));

	// Guardar la presentación en HTML
	pres.save("ConvertWholePresentationToHTML_out.html", SaveFormat.Html, htmlOpt);
} finally {
	if (pres != null) pres.dispose();
}

Convertir PowerPoint a HTML responsive

Aspose.Slides proporciona la clase ResponsiveHtmlController que permite generar archivos HTML responsive. Este código muestra cómo convertir una presentación de PowerPoint a HTML responsive en Java:

// Instanciar un objeto Presentation que representa un archivo de presentación
Presentation pres = new Presentation("Convert_HTML.pptx");
try {
    ResponsiveHtmlController controller = new ResponsiveHtmlController();
    HtmlOptions htmlOptions = new HtmlOptions();
    htmlOptions.setHtmlFormatter(HtmlFormatter.createCustomFormatter(controller));

    // Guardar la presentación en HTML
    pres.save("ConvertPresentationToResponsiveHTML_out.html", SaveFormat.Html, htmlOptions);
} finally {
    if (pres != null) pres.dispose();
}

Convertir PowerPoint a HTML con notas

Este código muestra cómo convertir un PowerPoint a HTML con notas en Java:

Presentation pres = new Presentation("Presentation.pptx");
try {
    HtmlOptions opt = new HtmlOptions();
	
    INotesCommentsLayoutingOptions options = opt.getNotesCommentsLayouting();
    options.setNotesPosition(NotesPositions.BottomFull);

    // Guardando páginas de notas
    pres.save("Output.html", SaveFormat.Html, opt);
} finally {
    if (pres != null) pres.dispose();
}

Convertir PowerPoint a HTML con fuentes originales

Aspose.Slides proporciona la clase EmbedAllFontsHtmlController que permite incrustar todas las fuentes de una presentación al convertirla a HTML.

Para evitar que ciertas fuentes se incrusten, puede pasar una matriz de nombres de fuentes 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.

Presentation pres = new Presentation("input.pptx");
try {
    // excluir fuentes predeterminadas de la presentación
    String[] fontNameExcludeList = { "Calibri", "Arial" };

    EmbedAllFontsHtmlController embedFontsController = new EmbedAllFontsHtmlController(fontNameExcludeList);

    HtmlOptions htmlOptionsEmbed = new HtmlOptions();
    htmlOptionsEmbed.setHtmlFormatter(HtmlFormatter.createCustomFormatter(embedFontsController));

    pres.save("input-PFDinDisplayPro-Regular-installed.html", SaveFormat.Html, htmlOptionsEmbed);
} finally {
    if (pres != null) pres.dispose();
}

Convertir PowerPoint a HTML con imágenes de alta calidad

De forma predeterminada, 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.

Este código Java muestra cómo convertir una presentación de PowerPoint a HTML mientras se obtienen imágenes de alta calidad a 150 DPI (es decir, PicturesCompression.Dpi150):

Presentation pres = new Presentation("InputDoc.pptx");
try {
    HtmlOptions htmlOpts = new HtmlOptions();
    htmlOpts.setPicturesCompression(PicturesCompression.Dpi150);
    
    pres.save("OutputDoc-dpi150.html", SaveFormat.Html, htmlOpts);
} finally {
    if (pres != null) pres.dispose();
}

Este código en Java muestra cómo generar HTML con imágenes de calidad completa:

Presentation pres = new Presentation("InputDoc.pptx");
try {
    HtmlOptions htmlOpts = new HtmlOptions();
    htmlOpts.setDeletePicturesCroppedAreas(false);

    pres.save("Outputdoc-noCrop.html", SaveFormat.Html, htmlOpts);
} finally {
    if (pres != null) pres.dispose();
}

Convertir una diapositiva a HTML

Para convertir una diapositiva específica de un PowerPoint a HTML, debe instanciar la misma clase Presentation (utilizada 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 Java muestra cómo convertir una diapositiva en una presentación de PowerPoint a HTML:

Presentation pres = new Presentation("Individual-Slide.pptx");
try {
    HtmlOptions htmlOptions = new HtmlOptions();
    htmlOptions.getNotesCommentsLayouting().setNotesPosition(NotesPositions.BottomFull);
	
    htmlOptions.setHtmlFormatter(HtmlFormatter.createCustomFormatter(new CustomFormattingController()));

    // Guardando archivo
    for (int i = 0; i < pres.getSlides().size(); i++)
        pres.save("Individual Slide" + (i + 1) + "_out.html", new int[]{i + 1},SaveFormat.Html, htmlOptions);
} finally {
    if (pres != null) pres.dispose();
}
public class CustomFormattingController implements IHtmlFormattingController
{
    @Override
    public void writeDocumentStart(IHtmlGenerator generator, IPresentation presentation) { }

    @Override
    public void writeDocumentEnd(IHtmlGenerator generator, IPresentation presentation) { }

    @Override
    public void writeSlideStart(IHtmlGenerator generator, ISlide slide) 
	{
        generator.addHtml(String.format(SlideHeader, generator.getSlideIndex() + 1));
    }

    @Override
    public void writeSlideEnd(IHtmlGenerator generator, ISlide slide) 
	{
        generator.addHtml(SlideFooter);
    }

    @Override
    public void writeShapeStart(IHtmlGenerator generator, IShape shape) { }

    @Override
    public void writeShapeEnd(IHtmlGenerator generator, IShape shape) { }

    private final String SlideHeader = "<div class=\"slide\" name=\"slide\" id=\"slide%d\">";
    private final String SlideFooter = "</div>";
}

Guardar CSS e Imágenes al exportar a HTML

Usando 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 Java en este ejemplo muestra cómo usar métodos sobrescribibles para crear un documento HTML personalizado con un enlace a un archivo CSS:

Presentation pres = new Presentation("pres.pptx");
try {
    CustomHeaderAndFontsController htmlController = new CustomHeaderAndFontsController("styles.css");
    HtmlOptions options = new HtmlOptions();
    options.setHtmlFormatter(HtmlFormatter.createCustomFormatter(htmlController));

    pres.save("pres.html", SaveFormat.Html, options);
} finally {
    if (pres != null) pres.dispose();
}
public class CustomHeaderAndFontsController extends EmbedAllFontsHtmlController
{
    private final int m_basePath = 0;

    // Plantilla de encabezado personalizada
    final static String Header = "<!DOCTYPE html>\n" +
            "<html>\n" +
            "<head>\n" +
            "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" +
            "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n" +
            "<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\">\n" +
            "</head>";

    private final String m_cssFileName;

    public CustomHeaderAndFontsController(String cssFileName) 
    {
        m_cssFileName = cssFileName;
    }

    public void writeDocumentStart(IHtmlGenerator generator, IPresentation presentation) 
    {
        generator.addHtml(String.format(Header, m_cssFileName));
        writeAllFonts(generator, presentation);
    }

    public void writeAllFonts(IHtmlGenerator generator, IPresentation presentation) 
    {
        generator.addHtml("<!-- Embedded fonts -->");
        super.writeAllFonts(generator, presentation);
    }
}

Enlazar 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 enlazar todas las fuentes implementando su propia versión de LinkAllFontsHtmlController.

Este código Java muestra cómo convertir un PowerPoint a HTML enlazando todas las fuentes y excluyendo “Calibri” y “Arial” (ya que existen en el sistema):

Presentation pres = new Presentation("pres.pptx");
try
{
    // Excluir fuentes predeterminadas de la presentación
    String[] fontNameExcludeList = { "Calibri", "Arial" };

    LinkAllFontsHtmlController linkcont = new LinkAllFontsHtmlController(fontNameExcludeList,"C:/Windows/Fonts/");

    HtmlOptions htmlOptionsEmbed = new HtmlOptions();
    htmlOptionsEmbed.setHtmlFormatter(HtmlFormatter.createCustomFormatter((IHtmlFormattingController) linkcont));

    pres.save("pres.html", SaveFormat.Html, htmlOptionsEmbed);
}
finally {
    if (pres != null) pres.dispose();
}

Este código Java muestra cómo está implementado LinkAllFontsHtmlController:

public class LinkAllFontsHtmlController extends EmbedAllFontsHtmlController
{
    private final String m_basePath;

    public LinkAllFontsHtmlController(String[] fontNameExcludeList, String basePath)
    {
        super(fontNameExcludeList);
        m_basePath = basePath;
    }

    public void writeFont
    (
            IHtmlGenerator generator,
            IFontData originalFont,
            IFontData substitutedFont,
            String fontStyle,
            String fontWeight,
            byte[] fontData)
    {
        try {
            String fontName = substitutedFont == null ? originalFont.getFontName() : substitutedFont.getFontName();
            String path = fontName + ".woff"; // puede ser necesario sanitizar la ruta
            Files.write(new File(m_basePath + path).toPath(), fontData, StandardOpenOption.CREATE);

            generator.addHtml("<style>");
            generator.addHtml("@font-face { ");
            generator.addHtml("font-family: '" + fontName + "'; ");
            generator.addHtml("src: url('" + path + "')");

            generator.addHtml(" }");
            generator.addHtml("</style>");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

Convertir PowerPoint a HTML responsive

Este código Java muestra cómo convertir una presentación de PowerPoint a HTML responsive:

Presentation pres = new Presentation("SomePresentation.pptx");
try {
    HtmlOptions saveOptions = new HtmlOptions();
    saveOptions.setSvgResponsiveLayout(true);
    pres.save("SomePresentation-out.html", SaveFormat.Html, saveOptions);
} finally {
    if (pres != null) pres.dispose();
}

Exportar archivos multimedia a HTML

Usando Aspose.Slides for Android vía Java, puede exportar archivos multimedia de esta forma:

  1. Cree una instancia de la clase Presentation.
  2. Obtenga una referencia a la diapositiva.
  3. Agregue un vídeo a la diapositiva.
  4. Guarde la presentación como archivo HTML.

Este código Java muestra cómo agregar un video a la presentación y luego guardarla como HTML:

// Cargando una presentación
Presentation pres = new Presentation();
try {
    String path = "./out/";
    final String fileName = "ExportMediaFiles_out.html";
    final String baseUri = "http://www.example.com/";

    byte[] videoData = Files.readAllBytes(Paths.get("my_video.avi"));
    IVideo video = pres.getVideos().addVideo(videoData);
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 100, 100, video);

    VideoPlayerHtmlController controller = new VideoPlayerHtmlController(path, fileName, baseUri);

    // Configurando opciones HTML
    HtmlOptions htmlOptions = new HtmlOptions(controller);
    SVGOptions svgOptions = new SVGOptions(controller);

    htmlOptions.setHtmlFormatter(HtmlFormatter.createCustomFormatter(controller));
    htmlOptions.setSlideImageFormat(SlideImageFormat.svg(svgOptions));

    // Guardando el archivo
    pres.save(fileName, SaveFormat.Html, htmlOptions);
} catch(Exception e) {
} finally {
    if (pres != null) pres.dispose();
}

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 multihilos o procesamiento paralelo siempre que sea posible.

¿Aspose.Slides admite la exportación de hipervínculos a HTML?

Sí, Aspose.Slides admite completamente la exportación de hipervínculos incrustados a HTML. Cuando convierte presentaciones al formato HTML, los hipervínculos se conservan automáticamente y siguen siendo clicables.

¿Existe algún límite en la cantidad de diapositivas al convertir presentaciones a HTML?

No hay límite en la cantidad de diapositivas al usar Aspose.Slides. Puede convertir presentaciones de cualquier tamaño. Sin embargo, para presentaciones que contengan un número muy grande de diapositivas, el rendimiento puede depender de los recursos disponibles en su servidor o sistema.