最終更新日 2025-04-26

「data: ***」の例

ブラウザ枠やレンダリング枠を利用した例には、

などがありますが、もうひとつ、「data: ***」を渡すことが出来ます。 通常のブラウザに対して利用されることは、ほぼありませんが、プログラムとブラウザのURLという関係においては使い勝手があるものになっています。

data: ****

ファイルとしての実態が存在しないものを、レンダリング枠に手軽に表示するのに利用できるのが data :*** です

HTMLの例

test.mac
jsmode "JScript\\" + currentmacrofilename;
 
js {
    renderpanecommand({
         target: "mytest_01",
         url: 'data:text/html;charset=utf-8;,<title>test</title><font color="red" size="5">あい</font>うえお',
         place: "right",
         size: 300,
         show: 1
    });
}
    

画像を表示する際は、下記のようにHTMLの中にbase64として埋め込むのが自然

画像自体の file:/// パスをそのまま url: プロパティに渡した場合は、レンダリング枠の中央に配置されるような形となります。
それだとやや見苦しいため、下記のように html の imgタグ として構築するのが良いでしょう。

test.mac
jsmode "JScript\\" + currentmacrofilename;
 
js {
     
    renderpanecommand({
         target: "mytest_02",
         url: 'data:text/html;charset=utf-8;,<title>test</title><img src="data:image/png;base64,UklGRtAIAABXRUJQVlA4WAoAAAAIAAAAKwEAngAAVlA4IIgIAACwMQCdASosAZ8APu12s1QppySjInSaMTAdiWVu4W5wxaL6+jZv8XSZbirnj/PR33j9VeB6/z2Cu/57uC/1mQLbzRHfHzUC/Gf59vAYAPrP6AMyb8AYTzXfImhO7u7gCXANEREQ6wESam4ldTN/+36ROuST/AL0F5B0JiHYqMQ/Ar58Zl91T/+mKuGU2yBPnoqlM9olqjGsrpZpu6B/4ucSTB+WTvhJT9uggAAAnfIMPOTmFMQDo9ydfneR1zkoeF/ys58NnevtjdVA5U7u7uy7hQj12vIR8G+9tSDn0or6kNmWvYbQ4wTgZSogrsZmZmZWxJC2TSLLjpemeWsyZUm0n5Qrctv253T1HUTQUxAxFCdE/fldAq6u/Td3dxCsQ/xmTa7RFIratdQm1ZI/nIkz4I/hJ7G3rRQozgqGYqMS7QIiIjzTPnTN4W7GY/aGzYfHAqWNEJl7G9hl3zsFqFeJ7k9kinz13d2xM/s3jgo/VhjcDngZadNE8891pDOiqqOwovYzfj98QRyf0amQcxzHKUyEIPYAAP71kH+1Pk72xWzb2NSegknVvQT/DAbOEPDtaPr0obG10y9P1Ah6LsQb3TxyZt+PJvohSpaQnV8og0/C5SbLpJpAAKB589VBCoCGsQ2sgOp5UqEg9qWRSWE3ggrsGatFE/4iInpS4i4MraSul38Y0uJjBUXbIc9TLGfhSpF5OwWPYR9KH4xxlrCSMd1kjCNL50Ib7hfbpBghBBFvt9O+Pj1QhrEnOsThOZXTS3PNmbovM8oU3mJ9s7GqKuTtPgCvJ7jGuk3CSG0ipmbFNmiSyYU0tc5xsmgYGgdg1QmU4sLer/wnqqGibJfp8YJYeQAGr72S1ctxHHyaK7mc2GUqx6UYW9CBN8xtgodz/mnFWZQVPzPvQVhs1TLZU9jCTaYcVLoxdc6rRcwcAch9oOQX9u4owaQA2ZkPWwPBnKjfTh/hgKEpmaYG9WwjDEdlAJT1bcKEmLPyTfC+IrVSPOwepu6N91whwFBZ0bbnJrVaV1M8YJZ5TXnzIj9WUrwqIAw+Eq8y3vxBl8DJIh1jXmsH3dHJ+fbFDygjOMfSNLLRxO6DPpQlAa77jVzIn+8w4jfvszm6kiUTNd/MY32Fp6sKXTZBFstDBG5ZOjGxA9+RC+C33zvAUrwC7qZFc6egXrhAaqPWOtGwpQkrD/pcukogPlw3FubXbzKoi34doi0qqh+kQmSVsmBmW4FO/v3Vj+/wCzCu/p5dOD3x6cLTUJQEBaGyoA7xpmS7yZ8Z7iOn8ZOVLJYrYPmJGhfwdlmkgQLiQHNuzpCxuMBCI199Vl8UxSkU5svgMlBmP7ClgFvjrwdSD4cOStgJ9ABH+OmOnHFDWB85zwDWi/Xwik8+vPBnKDcEMRHMZ5HlcdUnOkOpEAJGUBrJOyJQGxUsR4iijFWahu5vk0UkUqXYzWl3ZwclDkRmdulm/B3vbN22odLgYGMFWqjkq7aX/pZOCk8HsQoF+UK5i4kHPYdqqj6cjZKbs4JJ3KfP6ckFwFZhnydouvshC8Xoi3x/AJS6FiVloFn6gH8CIt/20VYfPoGrz/aKzoybb8u2LysYASZSATvmX4ri119IJ4j7QULGAONpFbNncGjxir02WjxcnVTajx03/oCmExwTsQfKre7k02fwqGKJMWWJ8qDtvb2qc6SLXrnnK6DgfOVeFblPLrpfpz8gnN4In0Gj1s3xb5apPTl+VIZf3//yYfZycT5bgiGJHeN8nyYWRHVeKjyTurGccBzyF4MTS1wFo3dv88jMcviOuNUvtDuc+PMc0FilC7ldSw5xUa1vcu+triYU9+rd6Dmqd6c00CGpnI0yj+cOoK2NCUyeqyI8KnF4jj32+U92fbMgx79y8Pz3C8ZPtw5oG7GEjYaICBR71kAEjMiYKREINJET4canby9cilZS52V9Bd1ySuAW4AYMgtHhZ4WkWjHcAvegpn1HI7hGqEiYstvckm0Na+87moH0KI6rRTssW+F7dGKAE4GhKtaeLmF3yA9xJiBof/QFqa79hvGtqqhnWF+K1inJqpCGtcB1uWN6keYVIj+P6tLSju3m1VpbBkbNgpf+6/O9qPDIuBTTCZOJyL4vwpuWZifW/f0tOEjl5tR3WQRjXj8bR6Tz+qZbNeQo8vcLpheeDa5E2YgPWZGlvy23X/whlHoQLNnyHwNlTeY2/HjmC9FPFzKJ6kkMRLiPd5WtFgPhIk7SmoM1DhuQC+AyGver6IjbBwQkJniZxOCUHJfRcXVaXLS8jYdtddM15F3nDxgliDAp9hsVTaJg+QuHFit3l2yWw0wD5vMSNE0bAyMlkqeiPzCJn233vXFy5kyW79T5PRf0FasBtDbqLN75/jUycHOjnQTtZIyd7jw3rC7WgPq9ZGXFjI/wQa5y6Om9ZC6qakjd6ObGb0pDXlwn2ua42NXH0LZxxmUoyV48FYjqIzgIG0KP+BndJuMBGhICNqWe2iTrLOp2CvwLnoKwb4aH6QKY9Y0xf/EnGvLHQNEfyR1jLUA1IEEyIFw95yM0VsVwDlrboe3hjKaXmgtbOfP7CIFvER3ukdg6gtL3DxH+fxjQ+Lqs7rIv/4hsTbKxR+VJ/jXx5BgYgXvjsLTc/+U6RBRezxuWuxN6xVP5ZVSiPcU48pD7ArGGStLuhMGbNw98iSgajaOzf+MEOZUjgXaTT32o4T0csS0QTgCBEkEPc49bgztrRc8SgmPEP6EnpUMy5KGGBrhrqLpluOfVpT2q4c46Zqp77XCxhMbSXQzG+eSmODa8bnMkoorJd5LWz/xfG/zZHx7/jno5Rp9WojW5BetAAAtm680TO3bJe2l2xt5ARZ87ReamqOpzadRzVEDm19tjyOs7YmB2m0Itoo8X+1yJGZE2NT0++AAAAABFWElGIgAAAElJKgAIAAAAAQAxAQIABwAAABoAAAAAAAAAR29vZ2xlAAA=">',
         place: "right",
         size: 300,
         show: 1
    });
}
    

ただし、画像の解像度が非常に大きく、base64にするのに負担が大きい場合は、
下記のように画像の file:/// パスを、そのまま url: プロパティに渡すのが良いでしょう

ただし、この場合には、レンダリング枠の中央に表示されることになります。

test.mac
jsmode "JScript\\" + currentmacrofilename;
 
js {
    renderpanecommand({
         target: "mytest_02",
         url: "C:\\Users\\master\\Pictures\\64x80_dark.png",
         place: "right",
         size: 300,
         show: 1
    });
}
    

これらは URL の一般的な仕様

秀丸専用の機能ではなく、一般的なURLの機能ですので、
「data:」「URL」などとして検索するなり、会話AIなどで調べてください。

ローカルに存在するファイルをbase64のテキストにする例

ローカルのファイルをマクロ内でbase64にするには、下記のような方法となるでしょう。

test.mac
jsmode "JScript\\" + currentmacrofilename;

js {

debuginfo(2);

function imageToBase64(imagePath) {
    if (!existfile(imagePath)) {
        return null;
    }

    try {
        // JScript
        var stream = createobject("ADODB.Stream");

        // ストリーム設定
        stream.Type = 1; // バイナリ
        stream.Open();
        stream.LoadFromFile(imagePath);
        stream.Position = 0;

        // バイナリをBase64に変換
        var domDocument = new createobject("MSXML2.DOMDocument");
        var base64 = domDocument.createElement("b64");
        base64.dataType = "bin.base64";
        base64.nodeTypedValue = stream.Read();

        // Base64文字列取得
        var base64String = base64.text;

        // ストリームを閉じる
        stream.Close();

        return base64String;

    } catch (e) {
        console.log("エラーが発生しました: " + e);
        return null; // エラーの場合はnullを返すなど適切な処理を行う
    }
}

var base64 = imageToBase64("C:\\Users\\master\\Pictures\\64x80_dark.png");
console.log(base64);

} // js