์๋ ํ์ธ์ ์จ๊ฒจ์ง 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/
์ด๊ฒ ์ข ๋์์ฃผ์ธ์
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
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์, ์ ๋ "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๋ฅผ ๋ง๋ญ๋๋ค.
๋๋ ๋น์ ์ด ๊ทธ๋ค์ ์ฌ๊ธฐ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค
๋๋ ์ด๊ฒ์ ์คํ์ธ์ด๋ก ์ผ๊ณ ์น ๋ ์์ ๋ฒ์ญํ์ต๋๋ค.