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

前端html-docx實現(xiàn)html轉word,預覽并導出文件

這篇具有很好參考價值的文章主要介紹了前端html-docx實現(xiàn)html轉word,預覽并導出文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用工具:html-docx

優(yōu)勢:圖片、圖表能直接預覽并轉為base64導出,省去后端難以實現(xiàn)圖表的生成后插入的麻煩
劣勢:適合一些簡單的word模板導出(比如只有標題正文簡單的表格圖表圖片的文檔),復雜的可以直接忽略。比如:紙張大小、紙張方向、css大部分樣式等等(經(jīng)本人試驗導出無法生成,如有大佬可以配置實現(xiàn)歡迎指正)

下載引入

npm install html-docx-js
npm install file-saver
// 引入
import htmlDocx from 'html-docx-js/dist/html-docx'
import saveAs from 'file-saver'

在創(chuàng)建的盒子內(nèi)完成html代碼

<div class="export-box">
	<!-- html -->
</div>
<button @click="gohtml">生成word</button>

生成word導出參考https://blog.csdn.net/Liuer_Qin/article/details/124799876

gohtml() {
  const app = document.querySelector('.export-box')
  const cloneApp = app.cloneNode(true)
  const canvases = app.getElementsByTagName('canvas')
  const cloneCanvases = cloneApp.getElementsByTagName('canvas')
  const promises = Array.from(canvases).map((ca, index) => {
    return new Promise((res) => {
      const url = ca.toDataURL('image/png', 1)
      const img = new Image()
      img.onload = () => {
        URL.revokeObjectURL(url)
        res()
      }
      img.src = url
      // 生成img插入clone的dom的canvas之前
      cloneCanvases[index].parentNode.insertBefore(img, cloneCanvases[index])
    })
  })
  // 移除原來的canvas
  const cloneCanvas = cloneApp.getElementsByTagName('canvas')
  Array.from(cloneCanvas).forEach((ca) => ca.parentNode.removeChild(ca))

  Promise.all(promises).then(() => {
    this.convertImagesToBase64(cloneApp)
    // console.log(document.head.outerHTML)
    const converted = htmlDocx.asBlob(`
      <html xmlns:o=\'urn:schemas-microsoft-com:office:office\' xmlns:w=\'urn:schemas-microsoft-com:office:word\' xmlns=\'http://www.w3.org/TR/REC-html40\'><head><style>
      ${document.head.outerHTML}
      </head>
      <body>
      ${cloneApp.outerHTML}
      </body>
      </html>`)
    saveAs(converted, 'test.docx')
  })
},
convertImagesToBase64(cloneApp) {
      var regularImages = cloneApp.getElementsByTagName('img')
      var canvas = document.createElement('canvas')
      var ctx = canvas.getContext('2d')
      regularImages.forEach((item) => {
        canvas.width = item.width
        canvas.height = item.height
        ctx.drawImage(item, 0, 0, item.width, item.height)
        var ext = item.src.substring(item.src.lastIndexOf('.') + 1).toLowerCase()
        var dataURL = canvas.toDataURL('image/' + ext)
        item.setAttribute('src', dataURL)
      })
      canvas.remove()
}

頁面及導出效果
html-docx,前端,html,word,html-docx
html-docx,前端,html,word,html-docx
最后補充一下,項目本準備開始采用這種方案來實現(xiàn)的,但是功能還是有些欠缺了,尤其紙張大小和橫版顯示,不得不放棄了這種方式。因為圖表的問題,最后是前端先請求數(shù)據(jù)再頁面隱藏位置生成圖表,按base64或者文件傳送的方式傳給后端,仍然由后端生成word返回文件流進行導出。
綜上,如何模板內(nèi)容格式簡單,要求低,純前端來實現(xiàn)這種預覽導出還是可行的,要求高的話還是后端去做吧。文章來源地址http://www.zghlxwxcb.cn/news/detail-562420.html

到了這里,關于前端html-docx實現(xiàn)html轉word,預覽并導出文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 文檔在線預覽(二)word、pdf文件轉html以實現(xiàn)文檔在線預覽

    文檔在線預覽(二)word、pdf文件轉html以實現(xiàn)文檔在線預覽

    @ 目錄 一、前言 1、aspose 2 、poi + pdfbox 3 spire 二、將文件轉換成html字符串 1、將word文件轉成html字符串 1.1 使用aspose 1.2 使用poi 1.3 使用spire 2、將pdf文件轉成html字符串 2.1 使用aspose 2.2 使用 poi + pbfbox 2.3 使用spire 3、將excel文件轉成html字符串 3.1 使用aspose 3.2 使用poi + pdfbox 3.3 使用

    2024年02月06日
    瀏覽(89)
  • 前端實現(xiàn)pdf,圖片,word文件預覽

    前端實現(xiàn)pdf,圖片,word文件預覽

    需求:實現(xiàn)一個在線預覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實現(xiàn)所有功能,建議以下的預覽文件標簽可以在外層包裹一層彈窗。 iframe標簽能夠將另一個HTML頁面嵌入到當前頁面中,我們的圖片也能夠使用iframe標簽來

    2024年02月11日
    瀏覽(26)
  • 前端實現(xiàn)文件預覽(pdf、excel、word、圖片)

    前端實現(xiàn)文件預覽(pdf、excel、word、圖片)

    需求:實現(xiàn)一個在線預覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實現(xiàn)所有功能,建議以下的預覽文件標簽可以在外層包裹一層彈窗。 sandbox 這個屬性如果是單純預覽圖片可以不使用,該屬性對呈現(xiàn)在 iframe 框架中的內(nèi)容

    2024年02月10日
    瀏覽(49)
  • 記錄--前端實現(xiàn)文件預覽(pdf、excel、word、圖片)

    記錄--前端實現(xiàn)文件預覽(pdf、excel、word、圖片)

    需求:實現(xiàn)一個在線預覽pdf、excel、word、圖片等文件的功能。 介紹:支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代碼實現(xiàn)所有功能,建議以下的預覽文件標簽可以在外層包裹一層彈窗。 iframe標簽能夠將另一個HTML頁面嵌入到當前頁面中,我們的圖片也能夠使用iframe標簽來

    2024年02月09日
    瀏覽(42)
  • 前端vue3實現(xiàn)本地及在線文件預覽(含pdf/txt/mp3/mp4/docx/xlsx/pptx)

    前端vue3實現(xiàn)本地及在線文件預覽(含pdf/txt/mp3/mp4/docx/xlsx/pptx)

    (一)微軟office免費預覽( 推薦 ) 支持doc/docx/xls/xlsx/ppt/pptx等多種office文件格式的免費預覽 (二)XDOC文檔預覽云服務 ?移動端和PC端無插件預覽PDF、OFD、Word、WPS等多種格式文檔 本地或內(nèi)網(wǎng)預覽需要借助插件實現(xiàn),pdf、mp3、mp4等主要靠原生標簽或瀏覽器自帶功能,盡量減少

    2024年02月05日
    瀏覽(63)
  • 【vue2】純前端實現(xiàn)本地的pdf/word/epub文件預覽

    需求是預覽本地的pdf/word/epub格式的文件,但是搜索后發(fā)現(xiàn)沒有可以直接使用的,格式不同,顯示的方式和效果也都略有不同。 最后還是 分別實現(xiàn)預覽 的功能。 如果只需要預覽pdf/word等格式的話,可以使用的方案:vue-office,支持多種文件(docx、excel、pdf)預覽的vue組件庫,支持

    2024年02月11日
    瀏覽(38)
  • vue中支持txt,docx,xlsx,mp4格式文件預覽(純前端)

    vue中支持txt,docx,xlsx,mp4格式文件預覽(純前端)

    在平常的工作當中,已經(jīng)會遇到文件上傳后需要預覽的功能,比如docx,doc,xls,xlsx,ppt,pdf,txt,圖片,視頻等格式的文件,其實也可以讓后端人員寫接口解析,本著不想麻煩別人的心態(tài),能自己解決的絕不麻煩別人,這里簡單介紹txt,docx,xlsx,mp4文件預覽。 ? ? ? ?1.在vue項目中安裝a

    2024年02月06日
    瀏覽(23)
  • 【vue2】純前端實現(xiàn)本地的pdf/word/epub文件預覽(包括pdf選中文字,epub高亮等)

    需求是預覽本地的pdf/word/epub格式的文件,但是搜索后發(fā)現(xiàn)沒有可以直接使用的,格式不同,顯示的方式和效果也都略有不同。 最后還是 分別實現(xiàn)預覽 的功能。 如果只需要預覽pdf/word等格式的話,可以使用的方案:vue-office,支持多種文件(docx、excel、pdf)預覽的vue組件庫,支持

    2024年02月11日
    瀏覽(32)
  • 前端導出word文件的多種方式、前端導出excel文件

    前端導出word文件的多種方式、前端導出excel文件

    先看效果: 這是頁面中的table 這是導出后的效果: 需要的依賴: npm 自行安裝,需要看官網(wǎng)的具體參數(shù)自行去github上面找對應的參數(shù) 具體代碼:(先看word模板,在看代碼,word中的變量和代碼中 doc.setData() 是一一對應的) 包依賴: 代碼 導出效果: 需要的依賴: node-xlsx 代碼

    2024年03月24日
    瀏覽(38)
  • vue項目用后端返回的文件流實現(xiàn)docx和pdf文件預覽

    vue項目用后端返回的文件流實現(xiàn)docx和pdf文件預覽

    寫這篇文章的目的,是因為我比較懶,想把代碼記錄一下,方便日后使用;哈哈,如果你也需要,也可以復制粘貼啊,為了方便自己和需要的人知道怎么使用,我盡量寫的詳細一點,沒有什么技術難點,就是簡單的記錄,萬一能幫到需要的人呢,也是一件美事; 其實也就是使

    2023年04月20日
    瀏覽(33)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包