成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

vue導(dǎo)出html、word和pdf

malakashi / 2290人閱讀

摘要:導(dǎo)出的頁面組件如下導(dǎo)出方法獲取要導(dǎo)出的組件頁面的把它設(shè)置成變量一文本并通過導(dǎo)出獲取要導(dǎo)出組件頁面的的標(biāo)簽代碼,通過獲取,也可以通過獲得構(gòu)造頁面,并使用構(gòu)造一個文件流并下載,如下具體代碼如下的簡歷獲取另外一種方式迅聘選才導(dǎo)出

導(dǎo)出的頁面組件如下:

1、導(dǎo)出html

方法:
1)獲取要導(dǎo)出的組件頁面的css把它設(shè)置成js變量一文本并通過export導(dǎo)出
2)獲取要導(dǎo)出組件頁面的html的dom標(biāo)簽代碼,通過this.$refs.resume.$el.innerHTML獲取,也可以通過document.getElementById("resumeId")獲得
3)構(gòu)造html頁面,并使用createObjectURL構(gòu)造一個文件流并下載,如下:

var a = document.createElement("a");
    var url = window.URL.createObjectURL(new Blob([content],
        { type: (option.type || "text/plain") + ";charset=" + (option.encoding || "utf-8") }));
    a.href = url;
    a.download = fileName || "file";
    a.click();
    window.URL.revokeObjectURL(url);

具體代碼如下:

import axios from "axios"
import resumeHtml from "./resume-html"
import writer from "file-writer";
import {resumecss} from "@/assets/style/download/resume.css.js"

...

 downloadHtml(name){               
            let html = this.getHtmlContent();
            let s = writer(`${name}的簡歷.html`, html, "utf-8");
            console.log("s stream",s);
            
        },
getHtmlContent(){
            //獲取html另外一種方式:this.$el.outerHTML
            const template = this.$refs.resume.$el.innerHTML;            
            let html = `
                
                
                    
                    
                    X-Find迅聘選才
                    
                    
                
                
                    
${template}
`; return html; }

導(dǎo)出的樣式j(luò)s文件:

export const resumecss =`
html,
body {
    position: relative;
    height: 100%;
}

.page_layout {
    position: relative;
    height: 100%;
    display: flex;
    & .layout_content {
        flex-grow: 1;
        display: flex;
        flex-direction: column;
    }
}
...
2、導(dǎo)出Word

方法:
1)使用上面構(gòu)造好的html文本,以文件流的形式發(fā)送到后臺,后臺通過轉(zhuǎn)換得到word流傳給前端并下載

let url = `${this.$url}/uploadFile/uploadResume`;
            let html = this.getHtmlContent();
            // 構(gòu)造blob文件流
            let html_ = new Blob([html],{ "type" : "text/html;charset=utf-8" })
            let formdata = new FormData();
            formdata.append("file", html_, `sdf.html`);//sdf.html是設(shè)置文件名
            axios({
                method: "post",
                url: url,
                data:formdata,
                responseType:"blob",//這里如果不設(shè)置,下載會打不開文件
            })
            .then(res=>{
                console.log("download res",res);
                //通過后臺返回 的word文件流設(shè)置文件名并下載
                var blob = new Blob([res.data], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8"}); //application/vnd.openxmlformats-officedocument.wordprocessingml.document這里表示doc類型
                var downloadElement = document.createElement("a");
                var href = window.URL.createObjectURL(blob); //創(chuàng)建下載的鏈接
                downloadElement.href = href;
                downloadElement.download ="s.doc"; //下載后文件名
                document.body.appendChild(downloadElement);
                downloadElement.click(); //點擊下載
                document.body.removeChild(downloadElement); //下載完成移除元素
                window.URL.revokeObjectURL(href); //釋放掉blob對象
            })
3、導(dǎo)出PDF

方法:
1)創(chuàng)建一個htmlToPdf.js文件,如下代碼

// 下面兩個package要多帶帶安裝
import html2Canvas from "html2canvas"
import JsPDF from "jspdf"

export default{
  install (Vue, options) {
    Vue.prototype.getPdf = function (id,title) {
      html2Canvas(document.querySelector(`#${id}`), {
        // allowTaint: true
        useCORS:true//看情況選用上面還是下面的,
      }).then(function (canvas) {
            let contentWidth = canvas.width
            let contentHeight = canvas.height
            let pageHeight = contentWidth / 592.28 * 841.89
            let leftHeight = contentHeight
            let position = 0
            let imgWidth = 595.28
            let imgHeight = 592.28 / contentWidth * contentHeight
            let pageData = canvas.toDataURL("image/jpeg", 1.0)
            let 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")
        }
      )
    }
  }
}

2)main.js文件中添加如下代碼:

import htmlToPdf from "@/utils/htmlToPdf"
Vue.use(htmlToPdf)

3)然后就可以在要導(dǎo)出pdf文件組件里面添加 如下 代碼即可導(dǎo)出

this.getPdf("resumeId",name)

總結(jié):

1、雖然完成了三種文件的導(dǎo)出但是我對word和html導(dǎo)出還是不滿意,不是最佳解決方法,如果 有人有更好的方法,歡迎留言
2、導(dǎo)出的word沒有了樣式,所以這塊還是有問題

引用 :

1、https://stackoverflow.com/questions/43537121/how-to-get-html-content-of-component-in-vue-js
2、file-writer
3、nodejs(officegen)+vue(axios)在客戶端導(dǎo)出word文檔
4、HTML5 File API — 讓前端操作文件變的可能
5、Html5——File、FileReader、Blob、Fromdata對象
6、Vue導(dǎo)出頁面為PDF格式
7、axios中文說明
8、vue實現(xiàn)word,pdf文件的導(dǎo)出

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96433.html

相關(guān)文章

  • vue開發(fā)可在線編輯簡歷的webApp

    摘要:例如第二步在根目錄下也就是中添加一個文件夾,文件夾名稱為第一步中二級域名的前綴,也就是然后將你的項目或者其他項目添加入該文件夾中。 項目初始 在一個陽光明媚的下午,學(xué)院就業(yè)指導(dǎo)老師讓我們每個人做一份簡歷,然后打印上交。后回到宿舍,苦苦在網(wǎng)上尋找,未果。因為不要錢的模板太丑,好看的模板得花錢...,像我等窮逼,哪里有什么閑錢。于是,果斷下載了個丑不拉幾的模板,打開word隨便填了填交了上...

    CatalpaFlat 評論0 收藏0
  • FineReport中JS如何自定義按鈕導(dǎo)出

    FineReport支持多種不同的導(dǎo)出方式,直接使用FineReport內(nèi)置導(dǎo)出按鈕可以非??旖莘奖愕膩韺Ω鞣N格式的輸出,但是我們在web頁面集成中的時候,往往只想將報表內(nèi)容嵌入到iframe中,而工具欄以及工具欄上的按鈕都會隱藏掉,而使用web頁面自定義的按鈕,那么,此時,這種自定義按鈕如何實現(xiàn)導(dǎo)出呢? showImg(https://segmentfault.com/img/bVJR1H?w=...

    wujl596 評論0 收藏0
  • vue使用OfficeWeb實現(xiàn)線上文件預(yù)覽

      在日常中查看使用word,excel,pptx的offic文件是常見之事,想過用使用微軟的開發(fā)接口,比如一個閱讀器Office Web。  什么是 Office Web 查看器?  它是一種創(chuàng)建 Office Web Viewer 鏈接的服務(wù)。Office Web Viewer 鏈接可在瀏覽器中打開 Word、PowerPoint 或 Excel 文件,否則這些文件將被下載。您可以輕松地將下載...

    3403771864 評論0 收藏0
  • 如何將一個PDF文件里的圖片批量導(dǎo)出

    摘要:假設(shè)我有下面這個文件,里面有很多圖片,我想把這些圖片批量導(dǎo)出,而不是在里一張張手動拷貝本文介紹一種快捷做法。 假設(shè)我有下面這個PDF文件,里面有很多圖片,我想把這些圖片批量導(dǎo)出,而不是在Adobe Acrobat Reader里一張張手動拷貝: showImg(https://segmentfault.com/img/remote/1460000017166430); 本文介紹一種快捷...

    thursday 評論0 收藏0

發(fā)表評論

0條評論

malakashi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<