在線預覽Word、Excel、PowerPoint等文件

在我們工作時,經常會有在線查看各種不同類型的文件的需要,如Word文檔、Excel表格、PowerPoint幻燈片和PDF等。可以直接在這里預覽:https://www.compdf.com/webviewer/demo

Word 文件實現前端預覽

方案一:

使用 XDOC 可以實現預覽以 DataURI 表示的 word 文檔,此外 XDOC 還可以實現文本、帶參數文本、html文本、json文本、公文等在線預覽,具體實現方法請看官方文檔

下面是使用 XDOC 實現預覽 DOCX 文檔的代碼示例:

注意:文檔地址要用utf-8編碼,并且外網可訪問

示例代碼:

window.open("https://view.xdocin.com/view?src=" + encodeURIComponent("https://view.xdocin.com/demo/view.docx"));

方案二:

使用 docx-preview 開源組件實現 word 文件預覽

  1. npm 安裝 docx-preview

  2. 獲取 word文檔 blob 數據流

  3. 調用 docx-preview 提供的 renderAsync 方法,并將獲取的 blob 數據流傳入方法中,渲染word文檔

示例代碼:

import Axios from "axios";
import { renderAsync } from "docx-preview";Axios.get('文檔下載路徑',{responseType: 'blob'
}).then(({data}) => {renderAsync(data, document.getElementById("container")) // 渲染到頁面
})

Excel 文件實現前端預覽

  1. 使用 npm 命令安裝庫:

    npm i exceljs handsontable @handsontable/vue

  2. 使用 exceljs 解析數據,通過 workbook.getWorksheet 方法獲取到每一個工作表的數據,將數據處理成一個二維數組的數據

  3. 引入 @handsontable/vue 的組件HotTable

  4. 通過settings屬性,將一些配置參數和二維數組數據傳入組件,渲染成excel樣式,實現預覽

<template><input type="file" @hange='handleFile' /><hot-table  :settings="hotSettings"></hot-table>
</template><script setup>import Excel from 'exceljs';import { HotTable } from "@handsontable/vue";import { ref } from 'vue';const data = ref([]);const handleFile = (e) => {const file = e.target.files[0];const workbook = new Excel.Workbook();await workbook.xlsx.load(file)// 第一個工作表const worksheet = workbook.getWorksheet(1);// 遍歷工作表中的所有行(包括空行)data.value = worksheet.getRows(1, worksheet.actualRowCount);})const hotSettings = {language: "zh-CN",readOnly: true,data: data.value,mergeCells: this.merge,colHeaders: true,rowHeaders: true,height: "auto",outsideClickDeselects: false,licenseKey: "non-commercial-and-evaluation"}
</script>

PowerPoint 文件實現前端預覽

使用 jszip 和 pptxjs 實現 PowerPoint 文件預覽

<div id="slide-resolte-contaniner" ></div> <script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="./js/jszip.min.js"></script> <!-- v2.. , NOT v.3.. -->
<script type="text/javascript" src="./js/filereader.js"></script> <!--https://github.com/meshesha/filereader.js -->
<script type="text/javascript" src="./js/d3.min.js"></script> <!-- for charts graphs -->
<script type="text/javascript" src="./js/nv.d3.min.js"></script> <!-- for charts graphs -->
<script type="text/javascript" src="./js/pptxjs.js"></script>
<script type="text/javascript" src="./js/divs2slides.js"></script> <!-- for slide show --><script> $("#slide-resolte-contaniner").pptxToHtml({ pptxFileUrl: "Sample_demo1.pptx", slidesScale: "50%", slideMode: false, keyBoardShortCut: false }); 
</script>

PDF 文件實現前端預覽

使用 ComPDFKit PDF SDK 實現 PDF 文件的在線預覽

第一步:添加 ComPDFKit PDF SDK 包

  1. @compdfkit 文件夾添加到項目的 目錄或 assets 目錄下的 lib 目錄中。這將作為 ComPDFKit PDF SDK for Web 的入文件,并將它導入到您的項目中。

  2. 將包含運行 ComPDFKit PDF SDK for Web 所需的靜態資源文件的 webviewer 文件夾添加到項目的靜態資源文件夾中。

第二步:顯示PDF文檔

  1. @compdfkit 文件夾中的 webviewer.js 文件導入到您的項目中。

  2. 調用 ComPDFKitViewer.init() 在您的項目中初始化 ComPDFKit Web Viewer。

  3. 將要顯示的 PDF 地址和許可證密鑰傳遞給 init 函數

// Import the JS file of ComPDFKit Web Viewer
import ComPDFKitViewer from "/@compdfkit/webviewer";
const viewer = document.getElementById('webviewer');
ComPDFKitViewer.init({pdfUrl: 'Your PDF Url',license: 'Input your license here'
}, viewer)
.then((core) => {const docViewer = core.docViewer;docViewer.addEvent('documentloaded', () => {console.log('ComPDFKit Web Viewer loaded');})
})
  1. 項目運行后,您就可以看到要顯示的 PDF 文件了。

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

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

相關文章

vscode|pycharm + docker + python

1&#xff0c;docker run的時候要加上port docker run -it --gpusall -p 2222:22 -v /掛載目錄/:/docker 目錄1/ -v /掛載目錄/:/docker 目錄2/ --namexxx image:v2 /bin/bash 2&#xff0c;docker 內部要安裝ssh 2.1方法命令&#xff1a; apt-get update apt-get install…

使用藍牙外設卻不小心把臺式機電腦藍牙關了

起因 今天犯了一個賊SB的錯誤&#xff0c;起因是藍牙鍵盤突然就不能輸入了&#xff08;雖然是連接狀態&#xff0c;但是按什么鍵都沒有反應&#xff09; 原來我的解決方法就是重啟一下電腦&#xff0c;但是那會電腦開了賊多的軟件。我就想重啟也太麻煩了&#xff0c;既然重啟…

Linux版本 centOS 7,java連接mysql

在Linux下 使用java 訪問數據庫 &#xff0c; java 1.7版本&#xff0c; mysql 8.0.33版本&#xff0c; 連接驅動 mysql-connector-java-5.1.49.jar 代碼如下&#xff1a; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import ja…

C#學習,反射

目錄 C#學習 .NET的體系結構 二次編譯 反射 什么是反射&#xff1f; 什么是Type&#xff1f; 什么是程序集&#xff1f; 反射API&#xff1a; 一&#xff0c;程序集 1&#xff0c; Load 2&#xff0c;LoadFrom 3&#xff0c;LoadFile 二&#xff0c;類型實例 1&a…

SSM中接口+mapper文件(增刪改查)

IActivateInfoDao接口 public interface IActivateInfoDao{//根據用戶id和驗證類型&#xff0c;判斷認證是否已存在ActivateInfo selectByUserIdAndType(Param("userId") String userId, Param("type") String type);//插入int insert(ActivateInfo activ…

一文讀懂c++語言

一文讀懂C語言 C的發展C的設計目標C的特性C的挑戰 C的發展 C是一種通用的、高級的編程語言&#xff0c;它是C語言的擴展。C由Bjarne Stroustrup于1983年首次引入&#xff0c;并在之后的幾十年中不斷發展壯大。C被廣泛應用于各種領域&#xff0c;包括系統開發、游戲開發、嵌入式…

pytest數據驅動(最簡單)

目錄 第一種&#xff1a;通過yaml文件獲取數據&#xff08;一維列表&#xff09; 第二種&#xff1a;通過yaml文件獲取數據&#xff08;二維列表&#xff09; 第三種&#xff1a;通過yaml文件獲取數據&#xff08;pytest.fixture&#xff09; 資料獲取方法 第一種&#xff…

國際騰訊云賬號云核算概述!!

云核算概述 維基百科界說&#xff1a;云核算是一種依據互聯網的新型核算方法&#xff0c;經過互聯網上異構、自治的服務為個人和企業供給按需即取的核算。 云核算描繪的一起特征&#xff1a;云是一種按需運用的服務&#xff0c;運用者只重視服務本身。 云核算作為IT服務形式&am…

四、Linux中cd、pwd以及相對/絕對路徑和特殊路徑符

1、cd命令&#xff1a; cd命令可以切換當前工作目錄&#xff0c;基礎語法是&#xff1a; cd [linux路徑] &#xff08;1&#xff09;、打開Linux的命令提示行&#xff0c;當前工作目錄是home&#xff0c;輸入“cd /”&#xff0c;可以切換到根目錄下&#xff0c;在根目錄下輸…

6_AccessKeyId和AccessKeySecret的環境變量配置

系列文章目錄 第1章 Linux安裝Docker 第2章 Docker安裝jdk1.8和MySql 第3章 Docker安裝redis 第4章 Jar包部署Docker 第5章 Docker-compose多服務統一編排管理 第6章 AccessKeyId和AccessKeySecret的環境變量配置 文章目錄 系列文章目錄前言一、WIN系統配置二、LINUX系統配置三…

【go語言學習筆記】05 Go 語言實戰

文章目錄 一、 RESTful API 服務1. RESTful API 定義1.1 HTTP Method1.2 RESTful API 規范 2. RESTful API 風格示例3. RESTful JSON API4. Gin 框架4.1 導入 Gin 框架4.2 使用 Gin 框架4.2.1 獲取特定的用戶&#xff08;GET&#xff09;4.2.2 新增一個用戶&#xff08;POST&am…

【前端 | CSS】align-items與align-content的區別

align-items 描述 CSS align-items 屬性將所有直接子節點上的 align-self 值設置為一個組。align-self 屬性設置項目在其包含塊中在交叉軸方向上的對齊方式 align-items是針對每一個子項起作用&#xff0c;它的基本單位是每一個子項&#xff0c;在所有情況下都有效果&…

SpringBoot復習:(31)Controller中返回的對象是如何轉換成json字符串給調用者的?

首先&#xff0c;SpringBoot自動裝配了HttpMessageConvertersAutoConfiguration這個自動配置類 而這個自動配置類又通過Import注解導入了JacksonHttpMessageConvertersConfiguration類&#xff0c; 在這個類中配置了一個類型為MappingJackson2HttpMessageConverter類型的bean…

vant van-tabs van-pull-refresh van-list 標簽欄+上拉加載+下拉刷新

<template><div class"huibj"><div class"listtab"><!--頂部導航--><div class"topdh"><topnav topname"余額明細"></topnav></div><!--Tab 標簽--><van-tabs v-model"…

Python教程(9)——Python變量類型列表list的用法介紹

列表操作 創建列表訪問列表更改列表元素增加列表元素修改列表元素刪除列表元素 刪除列表 在Python中&#xff0c;列表&#xff08;list&#xff09;是一種有序、可變的數據結構&#xff0c;用于存儲多個元素。列表可以包含不同類型的元素&#xff0c;包括整數、浮點數、字符串等…

配置 yum/dnf 置您的系統以使用默認存儲庫

題目 給系統配置默認存儲庫&#xff0c;要求如下&#xff1a; YUM 的 兩 個 存 儲 庫 的 地 址 分 別 是 &#xff1a; ftp://host.domain8.rhce.cc/dvd/BaseOS ftp://host.domain8.rhce.cc/dvd/AppStream vim /etc/yum.repos.d/redhat.repo [base] namebase baseurlftp:/…

C語言快速回顧(一)

前言 在Android音視頻開發中&#xff0c;網上知識點過于零碎&#xff0c;自學起來難度非常大&#xff0c;不過音視頻大牛Jhuster提出了《Android 音視頻從入門到提高 - 任務列表》&#xff0c;結合我自己的工作學習經歷&#xff0c;我準備寫一個音視頻系列blog。C/C是音視頻必…

Rabbitmq延遲消息

目錄 一、延遲消息1.基于死信實現延遲消息1.1 消息的TTL&#xff08;Time To Live&#xff09;1.2 死信交換機 Dead Letter Exchanges1.3 代碼實現 2.基于延遲插件實現延遲消息2.1 插件安裝2.2 代碼實現 3.基于延遲插件封裝消息 一、延遲消息 延遲消息有兩種實現方案&#xff…

2016年,進了百度

昨在深圳出差&#xff0c;與微信里的朋友吃了個便飯&#xff0c;他是今年四月份加的我微信&#xff08;gaoyang677&#xff09;&#xff0c;他的經歷很有意思&#xff0c;經他許可&#xff0c;分享給大家。 2012年時候&#xff0c;他大學畢業來到深圳&#xff0c;進了廠子&…

vue3 setup+Taro3 調用原生小程序自定義年月日時分多列選擇器,NutUI改造

vue3 setupTaro3 調用原生小程序自定義年月日時分多列選擇器&#xff0c;NutUI改造 NutUI 有日期時間選擇器&#xff0c;但是滑動效果太差&#xff0c;卡頓明顯。換成 原生小程序 很順暢 上代碼&#xff1a; <template><view><pickermode"multiSelector&…