關(guān)于html頁面導(dǎo)出pdf滾動(dòng)條以下顯示不全的問題

生成的pdf只有頁面窗口可見的區(qū)域,有滾動(dòng)條的下面沒有生成出來。如果截取是body的這個(gè)層級(jí),而剛好body設(shè)置了overflow: hidden;那超出的部分是永遠(yuǎn)截取不到的,因?yàn)檫@個(gè)節(jié)點(diǎn)的dom高就是窗口可見的高度,并不包含滾動(dòng)條多出來的部分。只需要在導(dǎo)出之前將overflow:aotu設(shè)置成visible(默認(rèn)即可);導(dǎo)出提后再設(shè)置回去。

代碼

export() {

? ? ? ? console.log('導(dǎo)出');

? ? ? ? $('.right-div').css({

? ? ? ? ? ? 'overflow-y': 'visible',

? ? ? ? ? ? 'height': 'auto'

? ? ? ? });

? ? ? ? let export_content = $('#export_content');

? ? ? ? let copyDom = $('<div/>');

? ? ? ? copyDom.addClass('super');

? ? ? ? copyDom.width(export_content.width() + 'px');

? ? ? ? copyDom.height(export_content.height() + 'px');

? ? ? ? $('body').append(copyDom);

? ? ? ? let cont = document.getElementById('export_content');

? ? ? ? html2canvas(export_content, {

? ? ? ? ? ? onrendered: (canvas) => {

? ? ? ? ? ? ? ? let cW = canvas.width; // 955

? ? ? ? ? ? ? ? ? ? let cH = canvas.height; // 2965

? ? ? ? ? ? ? ? ? ? // 一頁pdf顯示html頁面生成的canvas高度;

? ? ? ? ? ? ? ? ? ? let pageH = cW / 592.28 * 841.89; // 1357.4744208820155

? ? ? ? ? ? ? ? ? ? // 未生成pdf的html頁面高度

? ? ? ? ? ? ? ? ? ? let leftH = cH; // 2965

? ? ? ? ? ? ? ? ? ? // pdf頁面偏移

? ? ? ? ? ? ? ? ? ? let position = 0;

? ? ? ? ? ? ? ? ? ? // a4紙的尺寸[595.28,841.89],html頁面生成的canvas在pdf中圖片的寬高

? ? ? ? ? ? ? ? ? ? let imgW = 595.28;

? ? ? ? ? ? ? ? ? ? let imgH = 592.28 / cW * cH;

? ? ? ? ? ? ? ? ? ? console.log(cW, cH, pageH, leftH, position, imgW, imgH);

? ? ? ? ? ? ? ? ? ? let pageData = canvas.toDataURL('image/jpeg', 1.0);

? ? ? ? ? ? ? ? ? ? let pdf = new jsPDF('', 'pt', 'a4');

? ? ? ? ? ? ? ? ? ? // 有兩個(gè)高度需要區(qū)分,一個(gè)是html頁面的實(shí)際高度,和生成pdf的頁面高度(841.89)

? ? ? ? ? ? ? ? ? ? // 當(dāng)內(nèi)容未超過pdf一頁顯示的范圍,無需分頁

? ? ? ? ? ? ? ? ? ? if (leftH < pageH) {

? ? ? ? ? ? ? ? ? ? ? ? pdf.addImage(pageData, 'JPEG', 0, position, imgW, imgH);

? ? ? ? ? ? ? ? ? ? }else {

? ? ? ? ? ? ? ? ? ? ? ? while (leftH > 0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? pdf.addImage(pageData, 'JPEG', 0, position, imgW, imgH);

? ? ? ? ? ? ? ? ? ? ? ? ? ? leftH -= pageH;

? ? ? ? ? ? ? ? ? ? ? ? ? ? position -= 841.89;

? ? ? ? ? ? ? ? ? ? ? ? ? ? // 避免添加空白頁

? ? ? ? ? ? ? ? ? ? ? ? ? ? if (leftH > 0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pdf.addPage();

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? pdf.save('content.pdf');

? ? ? ? ? ? ? ? ? ? $('.super').remove();

? ? ? ? ? ? ? ? ? ? $('.right-div').css({

? ? ? ? ? ? ? ? ? ? ? ? 'overflow-y': 'auto',

? ? ? ? ? ? ? ? ? ? ? ? 'height': '100%'

? ? ? ? ? ? ? ? ? ? });

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? background: '#fff'

? ? ? ? });

? ? }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,200評(píng)論 1 92
  • 業(yè)務(wù)需求:財(cái)務(wù)ERP系統(tǒng)會(huì)計(jì)憑證的打印,科目打印需自動(dòng)拼接上輔助核算,如科目有外幣需打印外幣,對(duì)于長(zhǎng)憑證一張A4紙...
    清減半夏時(shí)光閱讀 18,389評(píng)論 7 9
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,886評(píng)論 1 45
  • 早上起床先生說不能開車送我去藍(lán)焰時(shí),頓時(shí)腦袋轟了一下!想想自己又要送小棗上學(xué),還得去取會(huì)場(chǎng)上忘帶的東西,我也不知道...
    TA77范麗萍閱讀 246評(píng)論 0 2
  • 問題描述 昨天同事在項(xiàng)目中集成一個(gè) aar 文件時(shí)遇到編譯報(bào)錯(cuò)的問題,搜遍網(wǎng)絡(luò)也沒找到解決方案,最后抱著試試的心態(tài)...
    Peak_jianshu閱讀 3,410評(píng)論 0 0

友情鏈接更多精彩內(nèi)容