欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue導出少量pdf文件實現(xiàn)示例詳解

 更新時間:2023年06月30日 14:31:28   作者:陶菇?jīng)? 
這篇文章主要為大家介紹了vue導出少量pdf文件實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

創(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,設(shè)置scale
     let opts = {
       scale: scale, // 添加的scale 參數(shù)
       canvas: canvas, //自定義 canvas
       logging: false, //日志開關(guān),便于查看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設(shè)置不能有transform,否則在火狐瀏覽器中,打印出來的pdf會有偏移。

以上就是vue導出少量pdf實現(xiàn)示例詳解的詳細內(nèi)容,更多關(guān)于vue導出pdf的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue接口請求加密實例

    vue接口請求加密實例

    這篇文章主要介紹了vue接口請求加密實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 使用vue編寫h5公眾號跳轉(zhuǎn)小程序的實現(xiàn)代碼

    使用vue編寫h5公眾號跳轉(zhuǎn)小程序的實現(xiàn)代碼

    這篇文章主要介紹了使用vue編寫h5公眾號跳轉(zhuǎn)小程序,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 動畫詳解Vue3的Composition?Api

    動畫詳解Vue3的Composition?Api

    為讓大家更好的理解Vue3的Composition?Api本文采用了詳細的動畫演繹,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 使用vue-print-nb打印el-table問題總結(jié)

    使用vue-print-nb打印el-table問題總結(jié)

    這篇文章主要介紹了使用vue-print-nb打印el-table問題總結(jié),通過實例代碼介紹了vue-print-nb 打印功能,本文結(jié)合實例代碼講解的非常詳細,感興趣的朋友一起看看吧
    2024-01-01
  • vue+iview+less 實現(xiàn)換膚功能

    vue+iview+less 實現(xiàn)換膚功能

    這篇文章主要介紹了vue+iview+less 實現(xiàn)換膚功能,項目搭建用的vue—cli,css框架選擇的iview,具體操作流程大家跟隨腳本之家小編一起看看吧
    2018-08-08
  • 關(guān)于vue設(shè)置環(huán)境變量全流程

    關(guān)于vue設(shè)置環(huán)境變量全流程

    這篇文章主要介紹了關(guān)于vue設(shè)置環(huán)境變量全流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue設(shè)置動態(tài)請求地址的例子

    vue設(shè)置動態(tài)請求地址的例子

    今天小編就為大家分享一篇vue設(shè)置動態(tài)請求地址的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue項目打包之后接口出現(xiàn)錯誤的問題及解決

    vue項目打包之后接口出現(xiàn)錯誤的問題及解決

    這篇文章主要介紹了vue項目打包之后接口出現(xiàn)錯誤的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vuex實現(xiàn)數(shù)據(jù)持久化的兩種方案

    vuex實現(xiàn)數(shù)據(jù)持久化的兩種方案

    這兩天在做vue項目存儲個人信息的時候,遇到了頁面刷新后個人信息數(shù)據(jù)丟失的問題,在查閱資料后,我得出兩種解決數(shù)據(jù)丟失,使用數(shù)據(jù)持久化的方法,感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • Vue中圖片上傳組件封裝-antd的a-upload二次封裝的實例

    Vue中圖片上傳組件封裝-antd的a-upload二次封裝的實例

    這篇文章主要介紹了Vue中圖片上傳組件封裝-antd的a-upload二次封裝的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論