国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue 項目前端導(dǎo)出pdf(純前端操作)

這篇具有很好參考價值的文章主要介紹了vue 項目前端導(dǎo)出pdf(純前端操作)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.安裝兩個插件:html2canvas和jspdf

npm install html2canvas
npm install jspdf文章來源地址http://www.zghlxwxcb.cn/news/detail-787426.html

2.創(chuàng)建一個公共文件tool.js如下

import html2canvas from 'html2canvas';
import JsPDF from 'jspdf';

/**
 * @param  ele          要生成 pdf 的DOM元素(容器)
 * @param  padfName     PDF文件生成后的文件名字
 * */

function downloadPDF(ele, pdfName){
    let eleW = ele.offsetWidth;// 獲得該容器的寬
    let eleH = ele.offsetHeight;// 獲得該容器的高
    let eleOffsetTop = ele.offsetTop;  // 獲得該容器到文檔頂部的距離
    let eleOffsetLeft = ele.offsetLeft; // 獲得該容器到文檔最左的距離
    var canvas = document.createElement("canvas");
    var abs = 0;
    let win_in = document.documentElement.clientWidth || document.body.clientWidth; // 獲得當(dāng)前可視窗口的寬度(不包含滾動條)
    let win_out = window.innerWidth; // 獲得當(dāng)前窗口的寬度(包含滾動條)
    if(win_out>win_in){
        // abs = (win_o - win_i)/2;    // 獲得滾動條長度的一半
        abs = (win_out - win_in)/2;    // 獲得滾動條寬度的一半
        // console.log(a, '新abs');
    }
    canvas.width = eleW * 2;    // 將畫布寬&&高放大兩倍
    canvas.height = eleH * 2;
    var context = canvas.getContext("2d");
    context.scale(2, 2);
    context.translate(-eleOffsetLeft -abs, -eleOffsetTop);
    // 這里默認(rèn)橫向沒有滾動條的情況,因為offset.left(),有無滾動條的時候存在差值,因此
    // translate的時候,要把這個差值去掉
    // html2canvas(element).then( (canvas)=>{ //報錯
    // html2canvas(element[0]).then( (canvas)=>{
    html2canvas( ele, {
        dpi: 300,
        scale: 3,
        // allowTaint: true,  //允許 canvas 污染, allowTaint參數(shù)要去掉,否則是無法通過toDataURL導(dǎo)出canvas數(shù)據(jù)的
        useCORS:true  //允許canvas畫布內(nèi) 可以跨域請求外部鏈接圖片, 允許跨域請求。
    } ).then( (canvas)=>{

        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 = 595.28/contentWidth * contentHeight;
        var pageData = canvas.toDataURL('image/jpeg', 1.0);
        var pdf = new JsPDF('', 'pt', 'a4');
        //有兩個高度需要區(qū)分,一個是html頁面的實際高度,和生成pdf的頁面高度(841.89)
        //當(dāng)內(nèi)容未超過pdf一頁顯示的范圍,無需分頁
        if (leftHeight < pageHeight) {
            //在pdf.addImage(pageData, 'JPEG', 左,上,寬度,高度)設(shè)置在pdf中顯示;
            pdf.addImage(pageData, 'JPEG', 0, 40, imgWidth, imgHeight);
            // pdf.addImage(pageData, 'JPEG', 20, 40, imgWidth, imgHeight);
        } else {    // 分頁
            while(leftHeight > 0) {
                pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight);
                leftHeight -= pageHeight;
                position -= 841.89;
                //避免添加空白頁
                if(leftHeight > 0) {
                    pdf.addPage();
                }
            }
        }
        //可動態(tài)生成
        pdf.save(pdfName);
    })


}


export default {
    downloadPDF
}

3.頁面使用如下(注意id不能放dialog標(biāo)簽上)

<el-dialog title=""  class="report-dialog" :visible.sync="dialogReport" :before-close="pdfClose" center>
      <!-- height:500px;overflow:scroll; -->
      <div class="downBtn">
      <el-button @click="download" class="down">下載</el-button>
    </div>
      <div id="investmentReport" style="padding:10px;">
      導(dǎo)出的內(nèi)容在這里啊
      </div>
</el-dialog>
      
  methods: {
      // 下載
      download(row){
        htmlToPdf.downloadPDFtest(
        document.querySelector("#investmentReport"),
        "默認(rèn)的pdf"
      );     
      }

到了這里,關(guān)于vue 項目前端導(dǎo)出pdf(純前端操作)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue2輕松實現(xiàn)HTML導(dǎo)出高質(zhì)量PDF,告別繁瑣操作

    Vue2輕松實現(xiàn)HTML導(dǎo)出高質(zhì)量PDF,告別繁瑣操作

    在前端開發(fā)中,我們常常需要將網(wǎng)頁內(nèi)容以PDF格式進(jìn)行導(dǎo)出。例如,企業(yè)需要將報告以PDF文件的形式保存并分享給客戶;學(xué)校需要將學(xué)生的作業(yè)打包成PDF文件進(jìn)行提交等。在Vue2中,我們可以通過一些簡單的步驟來實現(xiàn)HTML導(dǎo)出PDF功能。 目錄 一、使用jsPDF庫 二、實現(xiàn)導(dǎo)出PDF的方

    2024年02月10日
    瀏覽(27)
  • 前端(vue)js在線預(yù)覽PDF、Word、Excel、ppt等office文件

    可選參數(shù) pdf=true,word文檔嘗試以pdf方式顯示,默認(rèn)false watermark=水印文本,顯示文本水??;“img:”+圖片url表示圖片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允許保存源文件,默認(rèn)false printable=false,是否允許打印,默認(rèn)true ?able=false,是否允許選擇復(fù)制內(nèi)容,

    2024年02月13日
    瀏覽(94)
  • vue3項目使用pdf.js插件實現(xiàn):搜索高亮、修改pdf.js顯示的頁碼、向pdf.js傳值、控制搜索、處理接口文件流

    vue3項目使用pdf.js插件實現(xiàn):搜索高亮、修改pdf.js顯示的頁碼、向pdf.js傳值、控制搜索、處理接口文件流

    官網(wǎng)地址:http://mozilla.github.io/pdf.js/ 中文文檔地址:https://gitcode.gitcode.host/docs-cn/pdf.js-docs-cn/print.html PDF.js是基于HTML5技術(shù)構(gòu)建的,用于展示可移植文檔格式的文件(PDF),它可以在現(xiàn)代瀏覽器中使用且無需安裝任何第三方插件。 pdf.js主要包含兩個庫文件 pdf.js:負(fù)責(zé)API解析 pdf.wor

    2024年02月13日
    瀏覽(29)
  • 前端導(dǎo)出PDF(純前端功能)

    前端導(dǎo)出PDF(純前端功能)

    例如:需要導(dǎo)出PDF格式 提示:問題出現(xiàn)在滾動條加錯地方 首先: npm install html2canvas npm install jspdf 第二:新建一個htmlToPdf.js文件存放 // 導(dǎo)出頁面為PDF格式 import html2Canvas from \\\'./html2canvas\\\' import JsPDF from \\\'./jsPdf.debug\\\' export default{ ? name:\\\'wwutils\\\', ? toolExportPdf(fileName) { ? ? let isCompele

    2024年02月16日
    瀏覽(20)
  • JS打印、導(dǎo)出PDF

    JS打印、導(dǎo)出PDF

    這種方式打印的pdf比較高清,且分頁不會截斷文字和圖片,背景圖片是會被截斷的 1.直接打印 直接調(diào)用瀏覽器的打印功能,打印整個頁面 2.打印指定區(qū)域 通過開始標(biāo)記、結(jié)束標(biāo)記來打印,打印局部頁面 注意 :1.如果你要打印的區(qū)域中包含vue賦值對象,那你的開始結(jié)束標(biāo)志符

    2024年02月15日
    瀏覽(21)
  • 【前端】vue.js從入門到項目實戰(zhàn)筆記

    【前端】vue.js從入門到項目實戰(zhàn)筆記

    【前端目錄貼】 文本插值中的代碼被解釋為節(jié)點的文本內(nèi)容,而HTML插值中的代碼則被渲染為視圖節(jié)點。 3.1.1 文本插值 文本插值的方式:用 雙大括號 將要綁定的變量、值、表達(dá)式括住就可以實現(xiàn),Vue將會 獲取計算后的值 ,并以 文本的形式 將其展示出來。 結(jié)果: 3.1.2 HTM

    2024年01月21日
    瀏覽(30)
  • vue2 若依項目,使用plotly.js-dist圖表庫,將數(shù)據(jù)圖表一鍵導(dǎo)出為圖片

    vue2 若依項目,使用plotly.js-dist圖表庫,將數(shù)據(jù)圖表一鍵導(dǎo)出為圖片

    此代碼適用的場景是一個頁面有多個數(shù)據(jù)圖表。 首先需要拿到你生成數(shù)據(jù)圖表的數(shù)據(jù), 然后賦值給一個數(shù)組,數(shù)組需要在data定義,還需要去重。 ?然后點擊導(dǎo)出按鈕的代碼如下: 單個下載可以點擊數(shù)據(jù)圖表的照相機(jī),可以實現(xiàn)單個下載。 如果數(shù)據(jù)圖表做了分頁和懶加載,無

    2024年02月12日
    瀏覽(25)
  • tomcat部署前端vue項目(項目上線具體操作)

    在linux上安裝tomcat可以直接在linux服務(wù)器上通過wget方式直接下載tomcat,也可以把本地的tomcat上傳到服務(wù)器。 具體操作步驟如下: 創(chuàng)建一個tomcat目錄,位置可以根據(jù)自己情況選擇 將上傳的tomcat復(fù)制到上面目錄 進(jìn)入tomcat目錄 解壓tomcat 進(jìn)入tomcat的bin目錄 啟動tomcat 關(guān)閉tomcat 刪除

    2024年02月01日
    瀏覽(23)
  • 純前端實現(xiàn)導(dǎo)出pdf文件(服務(wù)端不參與)

    純前端實現(xiàn)導(dǎo)出pdf文件(服務(wù)端不參與)

    大致查閱了現(xiàn)階段使用較多的幾種方案,,大概有以下幾種方式: 一、原生window.print()方法導(dǎo)出pdf 二、jspdf 三、jspdf +?html2canvas 四、pdfmake 方案 優(yōu)點 缺點 window.print() 1、兼容性最好 2、可以將任意內(nèi)容導(dǎo)出成 pdf 文檔, 甚至是非改頁面上的內(nèi)容 1、調(diào)用方法時部分條件下導(dǎo)出pd

    2024年04月08日
    瀏覽(22)
  • vue項目中,動態(tài)src引入圖片,并且js根據(jù)文件名后綴,判斷文件圖片、視頻、文檔、pdf等類型的方法

    vue根據(jù)文件地址,獲取后綴,根據(jù)后綴判斷類型,然后根據(jù)類型動態(tài)展示不同類型的照片 1、處理后綴,根據(jù)后綴判斷類型? ?2、根據(jù)返回的結(jié)果,直接將文件名命名為返回的結(jié)果,比如我有個圖片類型的文件,經(jīng)過上述的方法,返回的是image,那我直接要顯示的圖片名稱就為

    2024年02月06日
    瀏覽(81)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包