スポンサーリンク

Win32APIでCEFのオフスクリーンレンダリング HTMLテキストを表示

CEFにHTMLテキストを直接与える場合、Data URIでテキストをURL化し、LoadURLに指定する。

// HTML文書追加に必要
// #include <include/cef_frame.h>  // CefFrame
// #include <include/cef_parser.h> // CefURIEncode

void SetHTML(CefRefPtr<CefBrowser> browser) {
    /*
      CEFでHTMLコンテンツを表示する方法の例
      LoadURLを使うので、URI経由でしかロードできない。
      そこで、リソースをURIで表す技術のData URIを使い、
      HTML文書をURIにエンコードしてロードする。
    */

    // 表示したいHTML文書
    const std::u8string html_content =
        u8R"(<html>
        <head><meta charset="UTF-8"></head>
        <body style="background-color:#CCCCCC;"><p>こんにちは☺</p></body>
        </html>)";


    /////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////

    CefRefPtr<CefFrame> frame = browser->GetMainFrame();

    // 1. HTMLコンテンツを CefString に変換
    CefString html_cef_string = CefString( (const char*)html_content.c_str() );

    // 2. Data URI の作成
    std::string data_uri_str = "data:text/html;charset=utf-8,";

    // 3. HTMLコンテンツをエンコードして Data URI に追加
    CefString encoded_html = CefURIEncode(html_cef_string, false);
    data_uri_str += encoded_html.ToString();

    // 3. Data URI をロード
    frame->LoadURL(CefString(data_uri_str));

}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: