-
[html2pdf] pdf 출력 시 쏠림현상, 한쪽 라인이 흐릿한 현상 해결하기개발자의 공부는 은퇴까지 필수다/vue 2021. 2. 26. 16:46
html2pdf 구현 중 많은 문제를 직면했다. 그 중 알고는 있지만 외면하고 있던 문제들을 결국 지적받았다 ㅎㅎ
※ 두가지 문제
1. pdf left에 margin이 생김 (사실 편법으로 right에도 margin을 주는 방법으로 처리를 해놨는데 이로 인해 2번 문제가 생김)
2. pdf 왼쪽 라인들이 흐릿하게 보임
※ 원인
canvas로 변경 시 html의 Xscroll (가로 scoll)까지 인식하여 생기는 문제
※ 해결
편법인지 모르겠지만 scroll을 hide 처리 한 다음 pdf 다운로드 후 다시 scroll을 보이게 처리
기존 html2pdf 옵션 - scroll로 인해 밀리는만큼 margin을 넣어줘 임의로 처리
let opt = { pagebreak: 'css', margin: [0,0,0,4], margin: 1, filename: 'aml_report', image: { type: 'jpg', quality: 0.98 }, html2canvas: { scrollY:0, scrollX:0, scale:1, dpi: 300, letterRendering: true, allowTaint: true /* ignoreElements : function( element ) { if( element.id == "pdf-button-area" ) { return true; } }*/ }, jsPDF: {orientation: 'portrait', unit: 'mm', format: 'a4', compressPDF: true}, };
수정 후 html2pdf 옵션 - margin을 없애고 scrollbar hide, show처리 삽입
var html = document.getElementsByTagName("html")[0]; html.classList.add( "hide-scrollbar" ) var element = document.getElementById('pdf-area'); let opt = { pagebreak: 'css', //margin: [0,0,0,4], margin: 1, filename: 'aml_report', image: { type: 'jpg', quality: 0.98 }, html2canvas: { scrollY:0, scrollX:0, scale:1, dpi: 300, letterRendering: true, allowTaint: true /* ignoreElements : function( element ) { if( element.id == "pdf-button-area" ) { return true; } }*/ }, jsPDF: {orientation: 'portrait', unit: 'mm', format: 'a4', compressPDF: true}, }; //html2pdf(element).set(opt); //var source = window.document.getElementById("exportPdf").innerHTML; //var worker = html2pdf().set(opt).from(element).save(); html2pdf().set(opt).from(element).save() .then( function() { html.classList.remove( "hide-scrollbar" ) });
#pdf left margin remove
#html2pdf scroll
#html2pdf border
#html2pdf right left
#html2pdf margin right left
'개발자의 공부는 은퇴까지 필수다 > vue' 카테고리의 다른 글
vue bootstrap table로 row 하위에 table 출력하기 (table in table) (0) 2021.10.14 [vue] 특정영역 제외 버튼 클릭 시 페이지 이동 (0) 2021.03.03 [html to pdf] vue에서 html을 pdf로 다운로드 하기 (심플버전), pdf image not showing 문제해결 (4) 2021.02.23 vue multipage 개발 시 사용자 분기처리, vue url 설정 (0) 2021.02.17 b-table list 화면에서 상세화면 넘어가기 (parameter 넘기기) (0) 2021.02.16