Vue2實現Office文檔(docx、xlsx、pdf)在線預覽

🌟 前言

歡迎來到我的技術小宇宙!🌌 這里不僅是我記錄技術點滴的后花園,也是我分享學習心得和項目經驗的樂園。📚 無論你是技術小白還是資深大牛,這里總有一些內容能觸動你的好奇心。🔍

  • 🤖 洛可可白:個人主頁

  • 🔥 個人專欄:?前端技術 ?后端技術

  • 🏠 個人博客:洛可可白博客

  • 🐱 代碼獲取:bestwishes0203

  • 📷 封面壁紙:洛可可白wallpaper

在這里插入圖片描述

Vue2實現Office文檔(docx、xlsx、pdf)在線預覽

  • Vue2實現Office文檔(docx、xlsx、pdf)在線預覽
    • 項目背景
    • 技術選型
    • 實現步驟
      • 1. 安裝依賴
      • 2. 配置Vue項目
      • 3. 實現docx文件預覽
      • 4. 實現xlsx文件預覽
      • 5. 實現pdf文件預覽
      • 6. 在主頁面中引入組件
    • 注意事項

Vue2實現Office文檔(docx、xlsx、pdf)在線預覽

在現代的Web應用開發中,實現Office文檔(如docx、xlsx、pdf)的在線預覽功能是一個常見的需求。這不僅可以提升用戶體驗,還能使文檔的共享和協作更加便捷。本文將介紹如何在Vue2項目中使用@vue-office/docx@vue-office/excel@vue-office/pdf這三個庫來實現docx、xlsx和pdf文件的在線預覽。

@vue-office/docx@vue-office/excel@vue-office/pdf的官方文檔及相關資源如下:

  • GitHub主頁:https://github.com/501351981/vue-office ,這是該組件庫的官方GitHub倉庫,你可以在這里查看項目的源代碼、提交問題、參與貢獻等。
  • GitHub Pages文檔:https://501351981.github.io/vue-office/examples/docs/guide/ ,這里提供了詳細的使用指南和示例,包括如何安裝、如何使用網絡地址預覽、如何設置組件的樣式等。
  • npm頁面:https://www.npmjs.com/package/@vue-office/pdf ,在npm頁面中可以查看各個包的版本信息、安裝命令、依賴關系等。
  • 其他參考資料
    • 博客園上有一篇關于在vue2/3中使用@vue-office/docx預覽docx文件的文章,介紹了使用示例和相關代碼。
    • CSDN博客上也有相關文章,對vue-office組件庫進行了介紹,并提供了使用示例。
    • 簡書上也有文章介紹了如何在vue中使用vue-office實現docx、excel、pdf等文件的預覽。

項目背景

在許多業務場景中,用戶需要在Web頁面上直接查看和操作Office文檔,而無需下載到本地再打開。例如,在企業內部的文檔管理系統、在線教育平臺、項目協作工具等場景中,這種需求尤為常見。通過在前端實現文檔的在線預覽,可以減少用戶操作步驟,提高工作效率,同時也能更好地保護文檔的安全性,避免文檔在傳輸過程中被篡改或泄露。

技術選型

為了實現這一功能,我們選擇了@vue-office/docx@vue-office/excel@vue-office/pdf這三個庫。它們都是基于Vue.js的開源庫,專門用于在Vue項目中實現Office文檔的在線預覽。這些庫封裝了底層的文檔解析和渲染邏輯,提供了簡潔易用的API,能夠方便地與Vue項目集成。

實現步驟

1. 安裝依賴

在項目根目錄下運行以下命令,安裝所需的庫:

npm install @vue-office/docx @vue-office/excel @vue-office/pdf

2. 配置Vue項目

vue.config.js文件中配置代理,以便在開發環境中能夠正確訪問后端接口。例如:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: true,devServer: {proxy: {'/api': {target: 'http://localhost:9090',changeOrigin: true,pathRewrite: {'^/api': ''}}},client: {overlay: false, // 解決全屏報錯},}
})

3. 實現docx文件預覽

src/components/VueOfficeDocxDemo.vue文件中,實現docx文件的預覽功能:

<template><div><vue-office-docx :src="docx" style="height: 100vh;" @rendered="renderedHandler" @error="errorHandler" /></div>
</template><script>
// 引入VueOfficeDocx組件
import VueOfficeDocx from '@vue-office/docx'
// 引入相關樣式
import '@vue-office/docx/lib/index.css'export default {name: "VueOfficeDocxDemo",components: {VueOfficeDocx},data() {return {docx: 'http://127.0.0.1:9000/senior-valve-hub/tutorials/%E6%B5%8B%E8%AF%953.0.docx', // 設置文檔地址}},methods: {renderedHandler() {console.log("渲染完成")},errorHandler() {console.log("渲染失敗")}}
};
</script>

4. 實現xlsx文件預覽

src/components/VueOfficeExcelDemo.vue文件中,實現xlsx文件的預覽功能:

<template><div><vue-office-excel :src="excel" :options="options" style="height: 100vh;" @rendered="renderedHandler"@error="errorHandler" /></div>
</template><script>
// 引入VueOfficeExcel組件
import VueOfficeExcel from '@vue-office/excel'
// 引入相關樣式
import '@vue-office/excel/lib/index.css'export default {name: "VueOfficeExcelDemo",components: {VueOfficeExcel},data() {return {options: {xls: true, // 預覽xlsx文件設為false;預覽xls文件設為trueminColLength: 10, // excel最少渲染多少列minRowLength: 10, // excel最少渲染多少行widthOffset: 10, // 單元格寬度偏移量heightOffset: 10, // 單元格高度偏移量beforeTransformData: (workbookData) => { return workbookData }, // 數據預處理transformData: (workbookData) => { return workbookData }, // 數據轉換},excel: 'http://127.0.0.1:9000/senior-valve-hub/tutorials/example.xlsx', // 設置文檔地址}},methods: {renderedHandler() {console.log("渲染完成")},errorHandler() {console.log("渲染失敗")}}
};
</script>

5. 實現pdf文件預覽

src/components/VueOfficePdfDemo.vue文件中,實現pdf文件的預覽功能:

<template><vue-office-pdf :src="pdf" @rendered="renderedHandler" @error="errorHandler" />
</template><script>
// 引入VueOfficePdf組件
import VueOfficePdf from '@vue-office/pdf'export default {name: "VueOfficePdfDemo",components: {VueOfficePdf},data() {return {pdf: 'http://127.0.0.1:9000/senior-valve-hub/tutorials/example.pdf', // 設置文檔地址}},methods: {renderedHandler() {console.log("渲染完成")},errorHandler() {console.log("渲染失敗")}}
};
</script>

6. 在主頁面中引入組件

src/App.vue文件中,引入上述三個組件,并在頁面中展示:

<template><div id="app"><h1>Vue2 Office文檔預覽</h1><vue-office-docx-demo /><vue-office-excel-demo /><vue-office-pdf-demo /></div>
</template><script>
import VueOfficeDocxDemo from './components/VueOfficeDocxDemo.vue'
import VueOfficeExcelDemo from './components/VueOfficeExcelDemo.vue'
import VueOfficePdfDemo from './components/VueOfficePdfDemo.vue'export default {name: 'App',components: {VueOfficeDocxDemo,VueOfficeExcelDemo,VueOfficePdfDemo}
}
</script><style>
#app {text-align: center;margin-top: 60px;
}
</style>

注意事項

  1. 文檔地址的合法性:確保文檔地址是可訪問的,并且服務器支持跨域請求。如果文檔地址無法訪問,可能會導致渲染失敗。
  2. 文檔格式支持@vue-office/docx支持docx格式,@vue-office/excel支持xlsx和xls格式,@vue-office/pdf支持pdf格式。請根據實際需求選擇合適的庫。
  3. 性能優化:對于較大的文檔,渲染可能會有一定的延遲。可以通過優化文檔結構、分頁加載等方式來提升性能。

如果對你有幫助,點贊👍、收藏💖、關注🔔是我更新的動力!👋🌟🚀

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82503.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82503.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82503.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【辰輝創聚生物】JAK-STAT信號通路相關蛋白:細胞信號傳導的核心樞紐

在細胞間復雜的信號傳遞網絡中&#xff0c;Janus 激酶 - 信號轉導和轉錄激活因子&#xff08;JAK-STAT&#xff09;信號通路猶如一條高速信息公路&#xff0c;承擔著傳遞細胞外信號、調控基因表達的重要使命。JAK-STAT 信號通路相關蛋白作為這條信息公路上的 “關鍵節點” 和 “…

OceanBase數據庫從入門到精通(運維監控篇)

文章目錄 一、OceanBase 運維監控體系概述二、OceanBase 系統表與元數據查詢2.1 元數據查詢基礎2.2 核心系統表詳解2.3 分區元數據查詢實戰三、OceanBase 性能監控SQL詳解3.1 關鍵性能指標監控3.2 SQL性能分析實戰四、OceanBase 空間使用監控4.1 表空間監控體系4.2 空間使用趨勢…

linux 進程間通信_共享內存

目錄 一、什么是共享內存&#xff1f; 二、共享內存的特點 優點 缺點 三、使用共享內存的基本函數 1、創建共享內存shmget() 2、掛接共享內存shmat 3、脫離掛接shmdt 4、共享內存控制shmctl 5.查看和刪除共享內存 comm.hpp server.cc Client.cc Makefile 一、什么…

Spring Boot 登錄實現:JWT 與 Session 全面對比與實戰講解

Spring Boot 登錄實現&#xff1a;JWT 與 Session 全面對比與實戰講解 2025.5.21-23:11今天在學習黑馬點評時突然發現用的是與蒼穹外賣jwt不一樣的登錄方式-Session&#xff0c;于是就想記錄一下這兩種方式有什么不同 在實際開發中&#xff0c;登錄認證是后端最基礎也是最重要…

Vue中的 VueComponent

VueComponent 組件的本質 Vue 組件是一個可復用的 Vue 實例。每個組件本質上就是通過 Vue.extend() 創建的構造函數&#xff0c;或者在 Vue 3 中是由函數式 API&#xff08;Composition API&#xff09;創建的。 // Vue 2 const MyComponent Vue.extend({template: <div…

使用 FFmpeg 將視頻轉換為高質量 GIF(保留原始尺寸和幀率)

在制作教程動圖、產品展示、前端 UI 演示等場景中,我們經常需要將視頻轉換為體積合適且清晰的 GIF 動圖。本文將詳細介紹如何使用 FFmpeg 工具將視頻轉為高質量 GIF,包括: ? 保留原視頻尺寸或自定義縮放? 保留原始幀率或自定義幀率? 使用調色板優化色彩質量? 降低體積同…

【自然語言處理與大模型】大模型Agent四大的組件

大模型Agent是基于大型語言模型構建的智能體&#xff0c;它們能夠模擬獨立思考過程&#xff0c;靈活調用各類工具&#xff0c;逐步達成預設目標。這類智能體的設計旨在通過感知、思考與行動三者的緊密結合來完成復雜任務。下面將從大模型大腦&#xff08;LLM&#xff09;、規劃…

《軟件工程》第 11 章 - 結構化軟件開發

結構化軟件開發是一種傳統且經典的軟件開發方法&#xff0c;它強調將軟件系統分解為多個獨立的模塊&#xff0c;通過數據流和控制流來描述系統的行為。本章將結合 Java 代碼示例、可視化圖表&#xff0c;深入講解面向數據流的分析與設計方法以及實時系統設計的相關內容。 11.1 …

初步嘗試AI應用開發平臺——Dify的本地部署和應用開發

隨著大語言模型LLM和相關應用的流行&#xff0c;在本地部署并構建知識庫&#xff0c;結合企業的行業經驗或個人的知識積累進行定制化開發&#xff0c;是LLM的一個重點發展方向&#xff0c;在此方向上也涌現出了眾多軟件框架和工具集&#xff0c;Dify就是其中廣受關注的一款&…

高階數據結構——哈希表的實現

目錄 1.概念引入 2.哈希的概念&#xff1a; 2.1 什么叫映射&#xff1f; 2.2 直接定址法 2.3 哈希沖突&#xff08;哈希碰撞&#xff09; 2.4 負載因子 2.5 哈希函數 2.5.1 除法散列法&#xff08;除留余數法&#xff09; 2.5.2 乘法散列法&#xff08;了解&#xff09…

7.安卓逆向2-frida hook技術-介紹

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;圖靈Python學院 工具下載&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取碼&#xff1…

DB-GPT擴展自定義Agent配置說明

簡介 文章主要介紹了如何擴展一個自定義Agent&#xff0c;這里是用官方提供的總結摘要的Agent做了個示例&#xff0c;先給大家看下顯示效果 代碼目錄 博主將代碼放在core目錄了&#xff0c;后續經過對源碼的解讀感覺放在dbgpt_serve.agent.agents.expand目錄下可能更合適&…

Android 架構演進之路:從 MVC 到 MVI,擁抱單向數據流的革命

在移動應用開發的世界里&#xff0c;架構模式的演進從未停歇。從早期的 MVC 到后來的 MVP、MVVM&#xff0c;每一次變革都在嘗試解決前一代架構的痛點。而今天&#xff0c;我們將探討一種全新的架構模式 ——MVI&#xff08;Model-View-Intent&#xff09;&#xff0c;它借鑒了…

【YOLOv8-pose部署至RK3588】模型訓練→轉換RKNN→開發板部署

已在GitHub開源與本博客同步的YOLOv8_RK3588_object_pose 項目&#xff0c;地址&#xff1a;https://github.com/A7bert777/YOLOv8_RK3588_object_pose 詳細使用教程&#xff0c;可參考README.md或參考本博客第六章 模型部署 文章目錄 一、項目回顧二、文件梳理三、YOLOv8-pose…

集成30+辦公功能的實用工具

軟件介紹 本文介紹的軟件是千峰辦公助手。 軟件功能概述與開發目的 千峰辦公助手集成了自動任務、系統工具、文件工具、PDF工具、OCR圖文識別、文字處理、電子表格七個模塊&#xff0c;擁有30余項實用功能。作者開發該軟件的目的是解決常見辦公痛點&#xff0c;把機械操作交…

IDEA啟動報錯:Cannot invoke “org.flowable.common.engine.impl.persistence.ent

1.問題 項目啟動報錯信息 java.lang.NullPointerException: Cannot invoke "org.flowable.common.engine.impl.persistence.ent 2.問題解析 出現這個問題是在項目中集成了Flowable或Activiti工作流&#xff0c;開啟自動創建工作流創建的表&#xff0c;因為不同環境的數據…

網絡安全--PHP第三天

今天學習文件上傳的相關知識 上傳的前端頁面如下 upload.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

【愚公系列】《生產線數字化設計與仿真》004-顏色分類站仿真(基礎概念)

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

基于 uni-app + <movable-view>拖拽實現的標簽排序-適用于微信小程序、H5等多端

在實際業務中&#xff0c;我們經常遇到「標簽排序」或「菜單調整」的場景。微信小程序原生的 movable-view 為我們提供了一個簡單、高效的拖拽能力&#xff0c;結合 Vue3 uni-app 的組合&#xff0c;我們可以實現一個體驗良好的標簽管理界面。 核心組件&#xff1a;<movab…

一些較好的學習方法

1、網上有一些非常經典的電路&#xff0c;而且有很多視頻博主做了詳細的講解。 2、有一部分拆解的UP主&#xff0c;拆解后會還原該器件的原理圖&#xff0c;并一步步做講解。 3、有兩本書&#xff0c;數電、模電&#xff0c;這兩本書中的內容很多都值得學習。 5、某寶上賣的…