vue導出pdf(大數(shù)量可能有問題)

1.首先創(chuàng)建js文件exportPdf.js,且需要安裝html2canvas和jspdf兩個插件裙秋;
然后將在你需要導出的頁面中執(zhí)行方法,

this.getPdf("html", "報表");
//參數(shù)一:導出范圍的id
//參數(shù)二:導出pdf文件的名稱

下面是導出的主要代碼磨镶;我在網(wǎng)上查找了大量的代碼才寫出了這個惋鹅,其他的代碼都是很淺顯,雖然也可以導出絮缅,但是一旦數(shù)據(jù)量過大,頁面較長導出的pdf文件便會白屏呼股;此文件解決了此問題,但是因為導出的pdf做了分頁画恰,而pdf又是由圖片轉(zhuǎn)換而來彭谁,所以分頁中會有截斷的問題,暫未解決允扇,希望大家可以指點缠局。

/* 導出pdf文檔 */
import html2Canvas from "html2canvas";
import JsPDF from "jspdf";
export default {
 install(Vue, options) {
   Vue.prototype.getPdf = function (id, title) {
     const loading = Vue.prototype.$loading({
       fullscreen: true,
       lock: true,
       text: 'Loading',
       spinner: 'el-icon-loading',
       background: 'rgba(0, 0, 0, 0.7)'
     });
     let shareContent = document.getElementById(id), //需要截圖的包裹的(原生的)DOM 對象
       width = shareContent.clientWidth, //獲取dom 寬度
       height = shareContent.clientHeight, //獲取dom 高度
       canvas = document.createElement("canvas"), //創(chuàng)建一個canvas節(jié)點
       scale = 1; //定義任意放大倍數(shù) 支持小數(shù)
     canvas.width = width * scale; //定義canvas 寬度 * 縮放
     canvas.height = height * scale; //定義canvas高度 *縮放
     canvas.style.width = shareContent.clientWidth * scale + "px";
     canvas.style.height = shareContent.clientHeight * scale + "px";
     canvas.getContext("2d").scale(scale, scale); //獲取context,設置scale
     let opts = {
       scale: scale, // 添加的scale 參數(shù)
       canvas: canvas, //自定義 canvas
       logging: false, //日志開關,便于查看html2canvas的內(nèi)部執(zhí)行流程
       width: width, //dom 原始寬度
       height: height,
       useCORS: true, // 【重要】開啟跨域配置
     }
     html2Canvas(shareContent, opts).then(() => {
       var contentWidth = canvas.width;
       var contentHeight = canvas.height;
       //一頁pdf顯示html頁面生成的canvas高度;
       var pageHeight = (contentWidth / 592.28) * 841.89;
       //未生成pdf的html頁面高度
       var leftHeight = contentHeight;
       //頁面偏移
       var position = 0;
       //a4紙的尺寸[595.28,841.89]考润,html頁面生成的canvas在pdf中圖片的寬高
       var imgWidth = 595.28;
       var imgHeight = (592.28 / contentWidth) * contentHeight;
       var pageData = canvas.toDataURL("image/jpeg", 1.0);
       var PDF = new JsPDF("", "pt", "a4");
       if (leftHeight < pageHeight) {
         PDF.addImage(pageData, "JPEG", 0, 0, imgWidth, imgHeight);
       } else {
         while (leftHeight > 0) {
           PDF.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight);
           leftHeight -= pageHeight;
           position -= 841.89;
           if (leftHeight > 0) {
             PDF.addPage();
           }
         }
       }
       PDF.save(title + ".pdf"); // 這里是導出的文件名
       loading.close();
       this.$router.go(-1)
     });
   };
 }
};

注意:打印的時候狭园,父級或者父級之上的元素的css設置不能有transform,否則在火狐瀏覽器中糊治,打印出來的pdf會有偏移唱矛。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市井辜,隨后出現(xiàn)的幾起案子绎谦,更是在濱河造成了極大的恐慌,老刑警劉巖粥脚,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窃肠,死亡現(xiàn)場離奇詭異,居然都是意外死亡刷允,警方通過查閱死者的電腦和手機冤留,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門碧囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纤怒,你說我怎么就攤上這事糯而。” “怎么了肪跋?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵歧蒋,是天一觀的道長。 經(jīng)常有香客問我州既,道長谜洽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任吴叶,我火速辦了婚禮阐虚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚌卤。我一直安慰自己实束,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布逊彭。 她就那樣靜靜地躺著咸灿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侮叮。 梳的紋絲不亂的頭發(fā)上避矢,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音囊榜,去河邊找鬼审胸。 笑死,一個胖子當著我的面吹牛卸勺,可吹牛的內(nèi)容都是我干的砂沛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼曙求,長吁一口氣:“原來是場噩夢啊……” “哼碍庵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悟狱,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤怎抛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芽淡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體马绝,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年挣菲,在試婚紗的時候發(fā)現(xiàn)自己被綠了富稻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掷邦。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椭赋,靈堂內(nèi)的尸體忽然破棺而出抚岗,到底是詐尸還是另有隱情,我是刑警寧澤哪怔,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布宣蔚,位于F島的核電站,受9級特大地震影響认境,放射性物質(zhì)發(fā)生泄漏胚委。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一叉信、第九天 我趴在偏房一處隱蔽的房頂上張望亩冬。 院中可真熱鬧,春花似錦硼身、人聲如沸硅急。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽营袜。三九已至,卻和暖如春丑罪,著一層夾襖步出監(jiān)牢的瞬間连茧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工巍糯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人客扎。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓祟峦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徙鱼。 傳聞我的和親對象是個殘疾皇子宅楞,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容