[轉(zhuǎn)帖]前端界面生成PDF并導(dǎo)出下載
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
思路: 通過 html2canvas 將 HTML 頁面轉(zhuǎn)換成圖片,然后再通過 jspdf 將圖片的 base64 生成為 pdf 文件 npm install html2canvas --save npm install jspdf --save 文檔:http://html2canvas.hertzen.com/configuration 其中,文檔中還缺少dpi,dpi就是像素的意思,dpi的值越大,證明圖片約清晰,我這里選擇的是300
3、jspdf
每個(gè)文檔介紹的不是很全面,所以,需要幾個(gè)文檔對比觀看下 import html2Canvas from 'html2canvas' import JsPDF from 'jspdf' export const getPdf = (title) =>{ return new Promise(resolve => { html2Canvas(document.queryselector('#resultsHuiZongTableId'), { allowTaint: false, useCORS: true, // allowTaint、useCORS只能夠出現(xiàn)一個(gè) imageTimeout: 0, dpi: 300, // 像素 scale: 4, // 圖片大小 }).then(function (canvas) { // document.body.appendChild(canvas) // 用于將canvas對象轉(zhuǎn)換為base64位編碼 let pageData = canvas.toDataURL('image/jpeg', 1.0), canvasWidth = canvas.width, canvasHeight = canvas.height, concentWidth = 500, concentHeight = Math.round((concentWidth / canvasWidth) * canvasHeight), position = 72, pageHeight = 892, height = concentHeight console.log(height, pageHeight) // 新建一個(gè)new JsPDF,A3的像素大小 842*1191,A4的像素大小 592*841。這個(gè)px像素不準(zhǔn)確,不清楚他們的像素大小來源如何 let PDF = new JsPDF('p', 'px', 'a3') if (height <= pageHeight) { // 添加圖片 PDF.addImage(pageData, 'JPEG', 68, position, concentWidth, concentHeight) } else { while (height > 0) { PDF.addImage(pageData, 'JPEG', 68, position, concentWidth, concentHeight) height -= pageHeight position -= pageHeight if (height > 0) { PDF.addPage() } } } // 保存 pdf 文檔 PDF.save(`${title}.pdf`) resolve(true) }) }) } <div class="conts" id="resultsHuiZongTableId" style="width:900px;" ></div> 該文章在 2023/8/18 8:37:32 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |