채택완료

canvas 를 pdf로 변환할때 페이지 밀림현상

2022-02-20 (일) 00:29:59 5,042

$('#savePdf').click(function() { // pdf저장 button id
        
        html2canvas($('#pdfDiv')[0]).then(function(canvas) { //저장 영역 div id
          var imgData = cnvs.toDataURL('image/jpeg');

          var imgWidth = 190; // 이미지 가로 길이(mm) A4 기준
          var pageHeight = imgWidth * 1; // 출력 페이지 세로 길이 계산 A4 기준
          var imgHeight = cnvs.height * imgWidth / cnvs.width + 50;
          var heightLeft = imgHeight;
          var margin = 10;

          var doc = new jsPDF('p', 'mm', 'a4');
          var position = 0;

          // 첫 페이지 출력
          doc.addImage(imgData, 'jpeg', margin, position, imgWidth, imgHeight);
          heightLeft = heightLeft - pageHeight - 100;
 

          // 한 페이지 이상일 경우 루프 돌면서 출력
          while (heightLeft >= 50) {
            position = heightLeft - imgHeight;
            doc.addPage();
            doc.addImage(imgData, 'jpeg', margin, position, imgWidth, imgHeight);
            heightLeft = heightLeft - pageHeight - 100;
          }

          // 파일 저장
          doc.save('sample.pdf');
    });

이렇게 해서 여러페이지가 생성이 되는데요.
페이지가 넘어갈수록 윗 여백이 밀립니다.
해결방법이 있을까요?

|

답변 2개

채택된 답변
+20 포인트

어떤 라이브러리를 사용했는지는 모르겠지만, 

미국식 기준은 레터지입니다. 

A4용지가 더 길죠.  A4를 레터로 하면 조금씩 넘어갈 수도 있는데..

혹시 모르니 이 부분도 체크해 보세요.

그리고 

https://stackoverflow.com/questions/36472094/how-to-set-image-to-fit-width-of-the-page-using-jspdf

여기도 참조해 보세요

네~ 감사합니다.

답변을 작성하려면 로그인이 필요합니다.