https://rawgit.com/MrRio/jsPDF/master/docs/jsPDF.html
<script src="/lib/pdfjs/jspdf.min.js"></script>
<script src="/lib/pdfjs/bluebird.min.js"></script>
<script src="/lib/pdfjs/html2canvas.min.js"></script>
<script>
function pdfPrint(){
// 현재 document.body의 html을 A4 크기에 맞춰 PDF로 변환
html2canvas(document.body, {
onrendered: function (canvas) {
// 캔버스를 이미지로 변환
var imgData = canvas.toDataURL('image/png');
var imgWidth = 210; // 이미지 가로 길이(mm) A4 기준
var pageHeight = imgWidth * 1.414; // 출력 페이지 세로 길이 계산 A4 기준
var imgHeight = canvas.height * imgWidth / canvas.width;
var heightLeft = imgHeight;
var doc = new jsPDF('p', 'mm');
var position = 0;
// 첫 페이지 출력
doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
// 한 페이지 이상일 경우 루프 돌면서 출력
while (heightLeft >= 20) {
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
}
// 파일 저장
doc.save('sample.pdf');
//이미지로 표현
//document.write('<img src="'+imgData+'" />');
}
});
}
window.onload = function(){
pdfPrint();
}
</script>
* chart.js 를 출력할 경우
애니메이션을 사용하지 않아야 그래프 길이가 정상 적으로 나온다.
responsiveAnimationDuration: 0,
animation: { duration: 0 },
참고
// 현재 document.body의 html을 A4 크기에 맞춰 PDF로 변환
html2canvas(document.body, {
onrendered: function(canvas) {
// 캔버스를 이미지로 변환
var imgData = canvas.toDataURL('image/png');
var imgWidth = 210; // 이미지 가로 길이(mm) A4 기준
var pageHeight = imgWidth * 1.414; // 출력 페이지 세로 길이 계산 A4 기준
var imgHeight = canvas.height * imgWidth / canvas.width;
var heightLeft = imgHeight;
var doc = new jsPDF('p', 'mm');
var position = 0;
// 첫 페이지 출력
doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
// 한 페이지 이상일 경우 루프 돌면서 출력
while (heightLeft >= 20) {
position = heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
}
// 파일 저장
doc.save('sample_A4.pdf');
}
});
https://jsfiddle.net/crabbly/kL68ey5z/
https://itinerant.tistory.com/51
//
html2canvas(document.body, {
backgroundColor: "#000000" # 배경 색 선택. 기본값 : 흰색
}).then(function(canvas) {
var base64image = canvas.toDataURL("image/png");
window.open(base64image , "_blank"); // Open the image in a new window
});
// Javascript일 경우
html2canvas(document.getElementById("capture")).then(function(canvas) {
});
// JQuery일 경우
html2canvas($("capture")[0]).then(function(canvas) {
});
data-html2canvas-ignore="true"로 canvas에서 보여지지 않게 처리
<div id="capture">
<span>a</span>
<span>b</span>
<div id="hide" data-html2canvas-ignore="true">
<span>c</span>
</div>
</div>
a태그 사용해서 저장할 경우
html2canvas(document.body, {
onrendered: function (canvas) {
var a = document.createElement('a');
a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
a.download = 'out.jpg';
a.click();
}
});
'[ Web 관련 ] > 자바스크립트' 카테고리의 다른 글
배열 그대로 자바스크립트에서 받는 방법 (0) | 2019.11.26 |
---|---|
자바스크립트 배열의 값 중 가장 큰수 알아내기 (0) | 2019.07.18 |
웹에서 파일 실행 exe, 실행파일 (0) | 2019.03.19 |
자바스크립트 페이지 속도 체크 코드 (0) | 2019.03.08 |
크롬에서 스크립트 오류 발생 - The message port closed before a response was received (0) | 2019.02.17 |