블로그의 여러 족장을 본 후, 우리는 다음과 같은 솔루션에 온다.
<! DOCTYPE HTML>
<HTML LANG = "EN">
<head>
<메타 캐릭터 = "UTF-8">
<메타 이름 = "뷰포트"내용 = "= 폭 소자 폭 초기 스케일 = 1.0">
<TITLE> 문헌 </ TITLE>
<스크립트 SRC = "https://cdn.bootcss.com/jquery/3.4.1/jquery.js"> </ script>
<스크립트 유형 = "텍스트 / 자바 스크립트"SRC = "../ html2Canvas / 렌더링 - HTML - 투 - PDF 마스터 / 문서 / JS / html2canvas.js"> </ script>
<스크립트 유형 = "텍스트 / 자바 스크립트"SRC = "../ html2Canvas / 렌더링 - HTML - 투 - PDF 마스터 / 문서 / JS / jsPdf.debug.js"> </ script>
</ head>
<body>
<스타일>
.export_content {
폭 : 600PX;
높이 : 100 픽셀;
오버 플로우 : 자동;
}
#함유량{
폭 : 600PX;
높이 : 자동;
패딩 : 30 픽셀;
위치 : 절대;
Z- 색인 0;
}
</ 스타일>
<버튼 ID = "exportToPdf"> PDF로 내보내기 </ 버튼>
<DIV 클래스 = "export_content">
<DIV>
내가 뭔가를 내보낼
</ DIV>
</ DIV>
<스크립트 유형 = "텍스트 / 자바 스크립트">
VAR downPdf = document.getElementById를 ( "exportToPdf");
downPdf.onclick = 함수 () {
VAR targetDom = $ ( "export_content.");
VAR copyDom targetDom.clone = () ATTR ( 'ID', '컨텐츠').;
copyDom.width (targetDom.width () + "픽셀");
. $ ( '몸') APPEND (copyDom);
html2canvas (
copyDom,
{
dpi로 : 172, // 수출 PDF 선명도
onrendered : 기능 (캔버스) {
VAR contentWidth = canvas.width;
VAR contentHeight = canvas.height;
// PDF로 HTML 페이지를 생성 캔버스 높이를 표시;
VAR의 pageHeight = contentWidth / 592.28 * 841.89;
//하지 생성 된 PDF HTML 페이지 높이
VAR leftHeight = contentHeight;
// PDF 페이지 오프셋
각 위치 = 0;
// HTML 페이지 캔버스는 PDF의 화상의 폭과 높이에 생성된다 (A4 용지 크기 [595.28,841.89])
imgWidth = 595.28이었다;
VAR imgHeight = 592.28 / contentWidth * contentHeight;
VAR pageData canvas.toDataURL = ( '영상 / JPEG', 1.0);
PDF이었다 새로운 jsPDF ( '', 'PT', 'A4를') =;
// 필요 (841.89)을,이 매우, 매우 실용적인 하나의 HTML 페이지 사이의 페이지 높이를 구별하고, PDF를 생성하는
// 표시 범위의 함량은 페이징없이 PDF를 초과하지 않을 때
경우 (leftHeight <pageHeight) {
pdf.addImage (pageData 'JPEG', 0, 0, imgWidth, imgHeight);
} 다른 {
반면 (leftHeight> 0) {
pdf.addImage (pageData 'JPEG', 0, 위치 imgWidth, imgHeight)
leftHeight - = pageHeight;
위치 - = 841.89;
// 피가 빈 페이지를 추가
경우 (leftHeight> 0) {
pdf.addPage ();
}
}
}
( 'content.pdf')를 pdf.save;
copyDom.remove ()
},
})
}
</ script>
</ body>
</ HTML>
이제 문제는 내용이 너무 오래 화면을 스플래시 할 때 찍은 경우가있다.
그러나 솔루션 생각합니다. 프로젝트가 VUE를 사용하기 때문에, 생성 된 키를 바인딩 할 수 있습니다 이 문제를 해결하기 위해 겉으로는 수. 너무 늦게 때문입니다. 우리는 테스트를 할 수가 없습니다. 이 블로그는 https://www.cnblogs.com/77yf/p/12452379.html 키를 사용하는 것입니다있다 (단지 아이디어를. 연습하지 않았다)