본문 바로가기
개발/javascript

script pdf 다운로드 인쇄하기 기능 php

by 향유 2021. 8. 6.

페이지 접속시 파라미터 this->reqData 필드를 읽어서

print시 인쇄

pdf 시 pdf 다운로드


        if($this->reqData['type']=='print'){
            $this->addScript('
                window.onload= function(){
                    setTimeout(function() {
                     window.print();
                    }, 100);
                }
            ');
        }else if($this->reqData['type']=='pdf'){
            $this->addScriptFile("https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.2.61/jspdf.min.js");
            $this->addScriptFile("https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js");
            $this->addScript('
                window.onload= function(){
                    setTimeout(function() {
                        html2canvas($("#printarea"), {
                        background :"#FFFFFF",
                            onrendered : function(canvas) {
                                // 한글깨짐현상때문에 jpeg->jspdf 전환
                                var imgData = canvas.toDataURL("image/jpeg");

                                var pageWidth = 210; //가로 길이 a4 기준
                                var pageHeight = pageWidth * 1.414; //출력 페이지 세로길이

                                var imgWidth = pageWidth - 20;

                                var imgHeight = canvas.height * imgWidth / canvas.width;
                                var heightLeft = imgHeight;

                                var doc = new jsPDF("p","mm",[pageHeight, pageWidth]);
                                var position = 10;

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

                                doc.save("화면.pdf");
                            }
                        });
                    }, 100);
                }
            ');
          }

댓글