こんにちは私は隠されているdivのスクリーンショットを撮りたいです
これは私が試したコードです
HTML:
<div` id="visible">
hello there!!
</div>
<div id="hidden" style="display:none">
You can't see me :P
</div>
JS:
var elem1=$("#hidden");
if(!elem1.is(":visible"))
{
elem1.show();elem1.fadeIn(1);elem1.fadeOut(1);
}
html2canvas(elem1).then(function(canvas){
$("body").append(canvas);
});
ブラウザのエラー:
****
Uncaught TypeError:nullhtml2canvas @ html2canvas.js:941(無名関数)@HtmlPageのプロパティ 'length'を読み取れません。 html:13
****
私のフィドル:https ://jsfiddle.net/h39tp0Ly/2/
これで私を助けてください
Html2canvasは、 display:noneスタイルを正しく解釈するため、非表示の要素をレンダリングしません。 必要なことを実現するために、ページビューポートから表示要素を完全に配置することができます(「非表示要素をレンダリングする」ことが必要な場合)。
役に立つかもしれません。
ありがとう !
divに「 display:none 」ではないcssがある場合にのみ機能します。 そこで、.show()と.hide()の組み合わせを使用して、要素を表示および非表示にしてCanvasを形成しました。
onclone: function(document) {
hiddenDiv = document.getElementById("render");
hiddenDiv.style.display = 'block';
}
インターネットで情報を見つけました。 「 display:none 」を使用してcssを指定されたdivに設定してから、上記のようにオプションoncloneを追加できます。 Plzはオプション「loggin:true」を追加して何が起こるかを確認します
実際には、絶対位置と左上/左の負の値を持つビューポートからコンテナを配置するトリック-Firefoxでは機能せず、NS_ERROR_FAILURE例外がスローされます
Chromeでも動作します
私はごく最近この問題に遭遇しました。特定のdivを非表示にしてスクリーンショットを表示したい場合は、cssプロパティを次のように設定します。
height: 0%
overflow:hidden
これは私にはうまくいきません
結局、ターゲットdivの直後にキャンバスを生成し、キャンバスがロードされた直後にdivを非表示にしました。 ちらつきはほとんど目立たない。
私のコードは次のようになります:
<div id="capture">
...
</div>
<div id="end"></div>
html2canvas(document.querySelector("#capture")).then(canvas => {
$("#end").append(canvas)
$("#capture").hide()
});
こんにちは、私はAngular6と "html2canvas"を使用して、 "jsPdf"でPDFを作成しています....非表示のdivにスクリーンショットを撮りたかったのですが、達成するまでできませんでした
キャプチャはID「html-pdf」のdivに対して行われます
「HTML」
`学生証/ a>
div id = "pdf" * ngIf = "test" style = "text-align:center; margin-top:5px;">
div id = "html-pdf">
/ div
/ div`
「jsまたは角度はTypescriptです」
`download2(){
var imgcab:文字列;
imgcab = this.base64logo.trim();
html2canvas(document.getElementById( 'html-pdf')、{scale:2})。 次に(関数(キャンバス){
var img = canvas.toDataURL( "image / png"、1);
var doc = new jsPDF({
向き: 'p'、
単位: 'mm'、
フォーマット: 'レター'、
});
doc.addImage(img、 'PNG'、2,2,212,272);
doc.addImage(imgcab、 'JPEG'、5、5、30、30);
doc.save( 'testCanvas.pdf');
}); `
そして、画面内のdivを非表示にするための最も重要なこと。
「CSS」
#pdf {
overflow: hidden;
height: 0;
}
コードは、非表示のdiv "pdf"内にあるdiv "html-pdf"のキャプチャを使用してpdfを作成します...
私はあなたが彼らに仕えることを望みます
私はこれをスペイン語で書き、チリから翻訳されました。
私は仕事をする正しい方法はonclone
プロパティを使用することだと思います、 https://stackoverflow.com/a/51049443/2251303
最も参考になるコメント
こんにちは、私はAngular6と "html2canvas"を使用して、 "jsPdf"でPDFを作成しています....非表示のdivにスクリーンショットを撮りたかったのですが、達成するまでできませんでした
キャプチャはID「html-pdf」のdivに対して行われます
「HTML」
`学生証/ a>
div id = "pdf" * ngIf = "test" style = "text-align:center; margin-top:5px;">
div id = "html-pdf">
/ div
/ div`
「jsまたは角度はTypescriptです」
`download2(){
var imgcab:文字列;
imgcab = this.base64logo.trim();
html2canvas(document.getElementById( 'html-pdf')、{scale:2})。 次に(関数(キャンバス){
var img = canvas.toDataURL( "image / png"、1);
var doc = new jsPDF({
向き: 'p'、
単位: 'mm'、
フォーマット: 'レター'、
});
doc.addImage(img、 'PNG'、2,2,212,272);
doc.addImage(imgcab、 'JPEG'、5、5、30、30);
doc.save( 'testCanvas.pdf');
}); `
そして、画面内のdivを非表示にするための最も重要なこと。
「CSS」
#pdf { overflow: hidden; height: 0; }
コードは、非表示のdiv "pdf"内にあるdiv "html-pdf"のキャプチャを使用してpdfを作成します...
私はあなたが彼らに仕えることを望みます
私はこれをスペイン語で書き、チリから翻訳されました。