Html2canvas: "display:none"์ด ์žˆ๋Š” div์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 03์›” 06์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: niklasvh/html2canvas

์•ˆ๋…•ํ•˜์„ธ์š” ์ˆจ๊ฒจ์ง„ 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);

});

๋ธŒ๋ผ์šฐ์ € ์˜ค๋ฅ˜:
**

์žกํžˆ์ง€ ์•Š์€ TypeError: nullhtml2canvas @ html2canvas.js:941(์ต๋ช… ํ•จ์ˆ˜) @ HtmlPage์˜ '๊ธธ์ด' ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. HTML:13

**
๋‚ด ๋ฐ”์ด์˜ฌ๋ฆฐ:https ://jsfiddle.net/h39tp0Ly/2/

์ด๊ฒƒ ์ข€ ๋„์™€์ฃผ์„ธ์š”

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” "jsPdf"๋กœ PDF๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Angular 6 ๋ฐ "html2canvas"๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .... ์ˆจ๊ฒจ์ง„ div๋กœ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ๊ณ  ์‹ถ์—ˆ๊ณ  ๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ๋•Œ๊นŒ์ง€ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์บก์ฒ˜๋Š” ID๊ฐ€ "html-pdf"์ธ div๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

"HTML"
` ํ•™์ƒ์ฆ /a>

div id = "pdf" *ngIf = "ํ…Œ์ŠคํŠธ" ์Šคํƒ€์ผ = "ํ…์ŠคํŠธ ์ •๋ ฌ: ๊ฐ€์šด๋ฐ, ์—ฌ๋ฐฑ ์ƒ๋‹จ: 5px;">
div ID = "html-pdf">

/div
/div`

"js ๋˜๋Š” ๊ฐ๋„๋Š” Typescript์ž…๋‹ˆ๋‹ค"
`๋‹ค์šด๋กœ๋“œ2() {
var imgcab: ๋ฌธ์ž์—ด;
imgcab = this.base64logo.trim();

html2canvas(document.getElementById('html-pdf'), {scale:2}). ๊ทธ๋Ÿฐ ๋‹ค์Œ (ํ•จ์ˆ˜(์บ”๋ฒ„์Šค) {

var img = canvas.toDataURL("์ด๋ฏธ์ง€ / png", 1);

var ๋ฌธ์„œ = ์ƒˆ 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๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ๋“ค์„ ์„ฌ๊ธฐ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค

๋‚˜๋Š” ์ด๊ฒƒ์„ ์ŠคํŽ˜์ธ์–ด๋กœ ์ผ๊ณ  ์น ๋ ˆ์—์„œ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  10 ๋Œ“๊ธ€

Html2canvas๋Š” display:none ์Šคํƒ€์ผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•ด์„ํ•˜๋ฏ€๋กœ ์ˆจ๊ฒจ์ง„ ์š”์†Œ๋ฅผ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€ ๋ทฐํฌํŠธ์—์„œ ๋ณด์ด๋Š” ์š”์†Œ๋ฅผ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค("์ˆจ๊ฒจ์ง„ ์š”์†Œ๋ฅผ ๋ Œ๋”๋ง"ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ).

์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌ ํ•ด์š” !

div์— " display:none "์ด ์•„๋‹Œ CSS๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ .show() ๋ฐ .hide() ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ๋ณด์ด๊ฑฐ๋‚˜ ์ˆจ๊ฒจ์„œ Canvas๋ฅผ ํ˜•์„ฑํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

       onclone: function(document) {
            hiddenDiv = document.getElementById("render");
            hiddenDiv.style.display = 'block';
        }

์ธํ„ฐ๋„ท์—์„œ ์ •๋ณด๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. " display:none "์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ div์— CSS๋ฅผ ์„ค์ •ํ•œ ๋‹ค์Œ ์œ„์™€ ๊ฐ™์ด onclone ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Plz๋Š” "loggin: true" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค

์‹ค์ œ๋กœ ์œ„์น˜ ์ ˆ๋Œ€ ๋ฐ ์ƒ๋‹จ/์™ผ์ชฝ ์Œ์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐํฌํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ํŠธ๋ฆญ - Firefox์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ NS_ERROR_FAILURE ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Chrome์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ

๋‚˜๋Š” ์•„์ฃผ ์ตœ๊ทผ์— ์ด ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค๊ณ  ํŠน์ • div๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ณ  ์Šคํฌ๋ฆฐ์ƒท์œผ๋กœ ์ฐํžˆ๋„๋ก ํ•˜๋ ค๋ฉด CSS ์†์„ฑ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

height: 0%
overflow:hidden

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค @ kchen1025

๋Œ€์ƒ div ์งํ›„์— ์บ”๋ฒ„์Šค๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ์บ”๋ฒ„์Šค๊ฐ€ ๋กœ๋“œ๋œ ์งํ›„ div๋ฅผ ์ˆจ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊นœ๋ฐ•์ž„์€ ๊ฑฐ์˜ ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<div id="capture">
  ...
</div>
<div id="end"></div>
html2canvas(document.querySelector("#capture")).then(canvas => {
  $("#end").append(canvas)
  $("#capture").hide()
});

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” "jsPdf"๋กœ PDF๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Angular 6 ๋ฐ "html2canvas"๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. .... ์ˆจ๊ฒจ์ง„ div๋กœ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ๊ณ  ์‹ถ์—ˆ๊ณ  ๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ๋•Œ๊นŒ์ง€ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์บก์ฒ˜๋Š” ID๊ฐ€ "html-pdf"์ธ div๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

"HTML"
` ํ•™์ƒ์ฆ /a>

div id = "pdf" *ngIf = "ํ…Œ์ŠคํŠธ" ์Šคํƒ€์ผ = "ํ…์ŠคํŠธ ์ •๋ ฌ: ๊ฐ€์šด๋ฐ, ์—ฌ๋ฐฑ ์ƒ๋‹จ: 5px;">
div ID = "html-pdf">

/div
/div`

"js ๋˜๋Š” ๊ฐ๋„๋Š” Typescript์ž…๋‹ˆ๋‹ค"
`๋‹ค์šด๋กœ๋“œ2() {
var imgcab: ๋ฌธ์ž์—ด;
imgcab = this.base64logo.trim();

html2canvas(document.getElementById('html-pdf'), {scale:2}). ๊ทธ๋Ÿฐ ๋‹ค์Œ (ํ•จ์ˆ˜(์บ”๋ฒ„์Šค) {

var img = canvas.toDataURL("์ด๋ฏธ์ง€ / png", 1);

var ๋ฌธ์„œ = ์ƒˆ 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

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰