Android で PowerPoint プレゼンテーションを HTML に変換

概要

この記事では、Java を使用して PowerPoint プレゼンテーションを HTML 形式に変換する方法を説明します。以下のトピックを取り上げます。

  • Java で PowerPoint を HTML に変換
  • Java で PPT を HTML に変換
  • Java で PPTX を HTML に変換
  • Java で ODP を HTML に変換
  • Java で PowerPoint スライドを HTML に変換

Android 上での PowerPoint から HTML への変換

PowerPoint を HTML に変換する Java のサンプルコードについては、以下のセクション Convert PowerPoint to HTML を参照してください。コードは PPT、PPTX、ODP などのさまざまな形式を Presentation オブジェクトで読み込み、HTML 形式で保存できます。

PowerPoint から HTML への変換について

Aspose.Slides for Android via Java を使用すると、アプリケーションや開発者は PowerPoint プレゼンテーションを HTML に変換できます:PPTX to HTML または PPT to HTML

Aspose.Slides は、PowerPoint から HTML への変換プロセスを定義する多数のオプション(主に HtmlOptions クラス)を提供します:

  • PowerPoint プレゼンテーション全体を HTML に変換します。
  • PowerPoint プレゼンテーションの特定のスライドを HTML に変換します。
  • プレゼンテーションのメディア(画像、動画など)を HTML に変換します。
  • PowerPoint プレゼンテーションをレスポンシブ HTML に変換します。
  • スピーカーノートを含めるか除外した HTML に PowerPoint プレゼンテーションを変換します。
  • コメントを含めるか除外した HTML に PowerPoint プレゼンテーションを変換します。
  • 元のフォントまたは埋め込みフォントを使用した HTML に PowerPoint プレゼンテーションを変換します。
  • 新しい CSS スタイルを使用した HTML に PowerPoint プレゼンテーションを変換します。

PowerPoint を HTML に変換

Aspose.Slides を使用すると、PowerPoint プレゼンテーション全体を次のように HTML に変換できます:

  1. Presentation クラスのインスタンスを作成します。
  2. オブジェクトを HTML ファイルとして保存するために、Save メソッドを使用します。

このコードは、Java で PowerPoint を HTML に変換する方法を示しています:

// プレゼンテーション ファイルを表す Presentation オブジェクトをインスタンス化します
Presentation pres = new Presentation("Convert_HTML.pptx");
try {
    HtmlOptions htmlOpt = new HtmlOptions();
	
    htmlOpt.getNotesCommentsLayouting().setNotesPosition(NotesPositions.BottomFull);
	
    htmlOpt.setHtmlFormatter(HtmlFormatter.createDocumentFormatter("", false));

    // プレゼンテーションを HTML に保存
    pres.save("ConvertWholePresentationToHTML_out.html", SaveFormat.Html, htmlOpt);
} finally {
    if (pres != null) pres.dispose();
}

PowerPoint をレスポンシブ HTML に変換

Aspose.Slides は、レスポンシブ HTML ファイルを生成できる ResponsiveHtmlController クラスを提供します。このコードは、Java で PowerPoint プレゼンテーションをレスポンシブ HTML に変換する方法を示しています:

// プレゼンテーション ファイルを表す Presentation オブジェクトをインスタンス化します
Presentation pres = new Presentation("Convert_HTML.pptx");
try {
    ResponsiveHtmlController controller = new ResponsiveHtmlController();
    HtmlOptions htmlOptions = new HtmlOptions();
    htmlOptions.setHtmlFormatter(HtmlFormatter.createCustomFormatter(controller));

    // プレゼンテーションを HTML に保存
    pres.save("ConvertPresentationToResponsiveHTML_out.html", SaveFormat.Html, htmlOptions);
} finally {
    if (pres != null) pres.dispose();
}

ノート付きで PowerPoint を HTML に変換

このコードは、Java でノート付きで PowerPoint を HTML に変換する方法を示しています:

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

    // ノートページを保存
    pres.save("Output.html", SaveFormat.Html, opt);
} finally {
    if (pres != null) pres.dispose();
}

元のフォント付きで PowerPoint を HTML に変換

Aspose.Slides は、プレゼンテーションを HTML に変換する際にすべてのフォントを埋め込むことができる EmbedAllFontsHtmlController クラスを提供します。

特定のフォントを埋め込まないようにするには、EmbedAllFontsHtmlController クラスのパラメータ化されたコンストラクタにフォント名の配列を渡すことができます。Calibri や Arial などの一般的なフォントは、プレゼンテーションで使用されても多くのシステムにすでに存在するため、埋め込む必要はありません。これらのフォントを埋め込むと、生成された HTML 文書が不要に大きくなります。

EmbedAllFontsHtmlController クラスは継承をサポートし、オーバーライド対象となる WriteFont メソッドを提供します。

Presentation pres = new Presentation("input.pptx");
try {
    // デフォルトのプレゼンテーションフォントを除外
    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();
}

高品質画像付きで PowerPoint を HTML に変換

既定では、PowerPoint を HTML に変換すると、Aspose.Slides は 72 DPI の小さな画像と切り取られた領域が削除された小さな HTML を出力します。より高品質な画像を含む HTML ファイルを取得するには、HtmlOptions クラスの PicturesCompression プロパティを 96(すなわち PicturesCompression.Dpi96)以上の値に設定する必要があります。

この Java コードは、150 DPI(PicturesCompression.Dpi150)の高品質画像を取得しながら PowerPoint プレゼンテーションを HTML に変換する方法を示しています:

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

この Java のコードは、フルクオリティの画像を含む HTML を出力する方法を示しています:

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

スライドを HTML に変換

PowerPoint の特定のスライドを HTML に変換するには、全体のプレゼンテーションを HTML に変換する際に使用したのと同じ Presentation クラスのインスタンスを作成し、[Save] メソッドでファイルを HTML として保存します。HtmlOptions クラスを使用して追加の変換オプションを指定できます:

この Java コードは、PowerPoint プレゼンテーションのスライドを HTML に変換する方法を示しています:

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

    // ファイルを保存
    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>";
}

HTML エクスポート時に CSS と画像を保存

新しい CSS スタイルファイルを使用すると、PowerPoint から HTML への変換プロセスで生成された HTML ファイルのスタイルを簡単に変更できます。

この例の Java コードは、オーバーライド可能なメソッドを使用して CSS ファイルへのリンクを含むカスタム HTML ドキュメントを作成する方法を示しています:

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;

    // カスタムヘッダーテンプレート
    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);
    }
}

プレゼンテーションを HTML に変換するときにすべてのフォントをリンク

フォントを埋め込みたくない(結果の HTML のサイズ増加を防ぐ)場合は、独自の LinkAllFontsHtmlController を実装してすべてのフォントをリンクすることができます。

この Java コードは、すべてのフォントをリンクし、システムに既に存在するため “Calibri” と “Arial” を除外して PowerPoint を HTML に変換する方法を示しています:

Presentation pres = new Presentation("pres.pptx");
try
{
    // デフォルトのプレゼンテーションフォントを除外
    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();
}

この Java コードは、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"; // パスのサニタイズが必要になる場合があります
            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();
        }
    }
}

PowerPoint をレスポンシブ HTML に変換

この Java コードは、PowerPoint プレゼンテーションをレスポンシブ HTML に変換する方法を示しています:

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

メディアファイルを HTML にエクスポート

Aspose.Slides for Android via Java を使用すると、次の手順でメディアファイルをエクスポートできます:

  1. Presentation クラスのインスタンスを作成します。
  2. スライドへの参照を取得します。
  3. スライドにビデオを追加します。
  4. プレゼンテーションを HTML ファイルとして書き出します。

この Java コードは、プレゼンテーションにビデオを追加し、HTML として保存する方法を示しています:

// プレゼンテーションをロード
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);

    // HTML オプションを設定
    HtmlOptions htmlOptions = new HtmlOptions(controller);
    SVGOptions svgOptions = new SVGOptions(controller);

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

    // ファイルを保存
    pres.save(fileName, SaveFormat.Html, htmlOptions);
} catch(Exception e) {
} finally {
    if (pres != null) pres.dispose();
}

FAQ

複数のプレゼンテーションを HTML に変換する際の Aspose.Slides のパフォーマンスはどの程度ですか?

パフォーマンスはプレゼンテーションのサイズや複雑さに依存します。Aspose.Slides はバッチ処理において非常に高効率でスケーラブルです。多数のプレゼンテーションを変換する際には、可能な限りマルチスレッドや並列処理を使用することが最適なパフォーマンスを実現するために推奨されます。

Aspose.Slides はハイパーリンクを HTML にエクスポートすることをサポートしていますか?

はい、Aspose.Slides は埋め込みハイパーリンクの HTML へのエクスポートを完全にサポートしています。プレゼンテーションを HTML 形式に変換すると、ハイパーリンクは自動的に保持され、クリック可能なままです。

プレゼンテーションを HTML に変換する際、スライド数に制限はありますか?

Aspose.Slides を使用する場合、スライド数に制限はありません。任意のサイズのプレゼンテーションを変換できます。ただし、非常に多くのスライドを含むプレゼンテーションの場合、パフォーマンスはサーバーやシステムの利用可能なリソースに依存することがあります。