私のサイトにDivがあります。クリックすると、印刷に使用される印刷コードと同じように、divとそのすべてのコンテンツがユーザーのコンピューターに保存されるボタン/リンク(またはその他の種類のもの)を配置したいと思います。 div私はコーディングの初心者なので、すべての助けに感謝します。
これを行うには、ブラウザのサポート制限があります。 HTML2Canvas HTMLコンテンツをcanvas
要素にレンダリングできます。次に、canvas.toDataURL("image/png");
( MDNのドキュメント )メソッドを使用して、canvas
要素をjpeg
またはpng
イメージにエクスポートできます。 。
広くサポートされていませんが、それでも可能です。
簡単な方法
var MyDiv1 = document.getElementById('DIV1');
var MyDiv3 = document.getElementById('DIV2');
MyDiv3.innerHTML = MyDiv1.innerHTML;
html2canvas(MyDiv3, {
useCORS: true,
onrendered: function (canvas) {
var dataUrl = canvas.toDataURL("image/png");
document.getElementById("HiddenField1").value = dataUrl;
}
});
ボタンを使用して、隠しフィールドの値を呼び出します
ButtonClick1()
{
string imgval = HiddenField1.Value;
imgval = imgval.Replace("data:image/png;base64,", "");
byte[] imgData = Convert.FromBase64String(imgval);
using (System.Drawing.Image image = System.Drawing.Image.FromStream(new MemoryStream(imgData)))
{
String path = Server.MapPath("~/imgFolder");
image.Save(path + "\\output.jpg", ImageFormat.Jpeg); // Or Png
}
}
スクリーンショットのような画像ファイルではなく、テキストまたはHTMLファイルが必要な場合、JavaScript自体はWebブラウザで[保存]ダイアログを開始できません。Web要求からサーバーへの応答のみが開始します。
まず、ボタンと非表示フィールドを備えたフォームが必要です。
<div id="saveme">stuff to save</div>
<form action="saveme.aspx" method="POST">
<input type="submit" onclick="prepsave()">
<input type="hidden" id="savemepost">
</form>
また、送信前にDIVの内容を非表示フィールドに保存するためのJavascriptが必要です。
<script>
function prepsave() {
document.getElementById("savemepost").value =
document.getElementById("saveme").innerHTML;
return true;
}
</script>
サーバーでは、テキストを受け入れて添付ファイルの形式で吐き出すためのコードが必要になります。
<script runat="server">
Response.Clear()
Response.AddHeader("content-disposition","attachment; filename=saved.html")
Response.Write(Request.Form("savemepost"))
</script>
警告#1:そこにはおそらくいくつかの小さなバグがあり、改善の余地がたくさんあります。これは概念実証にすぎません。
警告#2:上記のサーバー側コードは、ドメインからユーザーのWebブラウザーに送信されるコンテンツを任意のWebページで制御できるため、潜在的に安全ではありません。これを悪用から保護するために、いくつかの対策を追加する必要があります。
これを行う簡単な方法は、GrabzItのJavaScript APIを使用して divをキャプチャ することです。次のようなことをする必要があります。 #featuresは、キャプチャするdivのIDです。
<script type="text/javascript" src="grabzit.min.js"></script>
<script type="text/javascript">
GrabzIt("Your Application Key").ConvertURL("http://www.example.com/my-page.html",
{"target": "#features", "bheight": -1, "height": -1, "width": -1}).Create();
</script>
免責事項私はこのAPIを作成しました!