vue docx-preview实现docx文件在线预览

article/2025/10/16 8:01:48

        之前一般做项目进行文件浏览的时候基本都是用的window.open+url的形式打开文件,进行浏览操作的,但是这种打开方式只能够在线浏览如jpg、png、pdf这类文件,对于文档类型docx这种则是用下载的方式打开的。这次甲方爸爸不想要下载了,于是就来使docx-preview这个在线预览组件了。(这个插件只能够实现docx后缀的文件,doc文件打不开滴

1.下载插件

npm i docx-preview --saveoryarn add docx-preview

2.导入

import { renderAsync } from 'docx-preview';//一般用这种形式就行了
let docx = requie('docx-preview');//我是vue3项目 报错require不行 就用的下边这种了
let docx = import.meta.glob('docx-preview');

3.使用组件

如图有两个文件,设计点击时传送文件file 得到如下数据

 

因为之前上传时已经限定了上传文件格式,所以通过fileType判断,是图片文件还是docx文档文件,图片文件则直接传url浏览,文档文件则需处理,选择的是将文件通过url地址换成以下这种形式进行操作

 要渲染的组件:

 <div ref="childRef" class="childRef"></div>

渲染语法: 

function previewfile(item) {if (item.fileType == '.docx') {nextTick(() => {fetch(item.filePath).then((response) => {let docData = response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef = document.getElementsByClassName('childRef');//用docx-preview渲染renderAsync(docData, childRef[0]).then((res) => {console.log('res---->', res);});}).catch((error) => {console.log(error);});});} else {ImageUrl.value = toRaw(item).filePath;}
}

实现结果

这个组件渲染出来有自带的样式,自己修改修改样式就行了


更新一下关于样式方面的问题:

文档以弹窗形式出现组件代码如下

<el-dialog v-model="dialogVisible" class="dialogLarge" append-to-body :destroy-on-close="true">//此处是弹窗名称<template #header><div class="dialogHeader"><div>预览</div></div></template>//此处是预览图片的Img组件<imgw-full:src="dialogImageUrl"alt="Preview Image"style="height: auto; width: 100%"v-show="dialogImageUrl"/>//此处是用于渲染docx文档的div<div ref="childRef" class="childRef"></div>
</el-dialog>

生成效果如图:

 这个组件会自动生成docx-wrapper的div盒子,有自带的样式

1.修改.docx-wrapper{background:white}去除灰边

 

 2..docx-wrapper>section.docx{box-shadow:none}去除阴影效果

屏蔽或者用!important设置section.docx自带的高度宽度等属性,得到符合UI要求的样子

//vue3使用:deep(){}的形式进行样式穿透
//vue2是::v-deep或者/deep/的形式进行样式穿透:deep(.docx-wrapper) {background-color: #fff;padding: 0;
}
:deep(.docx-wrapper > section.docx) {width: 100% !important;padding: 0rem !important;min-height: auto !important;box-shadow: none;margin-bottom: 0;
}

 

 


http://chatgpt.dhexx.cn/article/DoKAX7FW.shtml

相关文章

ProviewR

1. ProviewR开源过程控制系统介绍 李工&#xff1a;https://www.bilibili.com/video/BV1qu41117jd/?spm_id_from333.788 北岛李工&#xff1a;开源过程控制系统ProviewR初体验——Modbus-TCP通信_哔哩哔哩_bilibili ProviewR官网&#xff1a;http://www.proview.se/v3/index.p…

Compose中的预览@Preview与@PreviewParameter的使用

文章目录 前言一、Preview二、PreviewParameter1.单个参数2.多个参数 前言 阅读本文需要一定compose基础&#xff0c;如果没有请移步Jetpack Compose入门详解&#xff08;实时更新&#xff09; 本文介绍Preview与PreviewParameter注解的使用 一、Preview 如果你构建了一个Co…

最新版Android Studio如何preview

之前看到有的博客里写到&#xff0c;Android Studio有个preview功能特别好用&#xff0c;可以边写代码边预览&#xff0c;类似下图这样的&#xff1a;&#xff08;图片来源&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/20855561&#xff09; 之前的And…

Preview使用技巧,强大的macOS原生应用:「预览」(Preview)

首先要介绍的macOS原生应用是预览&#xff08;preview&#xff09;app。很多人&#xff0c;包括我在最开始使用macOS的时候&#xff0c;像当初使用Windows一样&#xff0c;安装了系统&#xff0c;满大街找各种软件将自己的电脑武装起来。可是apple已经为我们武装好电脑了&#…

报错处理 ITK only supports orthonormal direction cosines. No orthonormal definition found

在使用SimpleITK处理MRI医学图像数据的时候遇到了以下问题&#xff1a; File "d:\PythonProgramme\GenerateDatasetTxt\xx.py", line 12, in <module>img sitk.ReadImage("0000264276/T2.nii.gz")File "D:\Program Files\Anaconda3\envs\simpl…

Python执行selenium报错This version of ChromeDriver only supports Chrome version并配置环境变量

1.This version of ChromeDriver only supports Chrome version 这个报错的意思是chrome驱动的版本不匹配&#xff0c;所以需要查看自己的chrome的版本&#xff0c;再根据版本下载对应的chromedriver.exe&#xff0c;具体操作步骤如下 第一步查看chrome的版本&#xff1a; 第…

Android Studio调式手机时提示 device supports but apk only supports armeabi-v7a

转载来自 https://blog.csdn.net/lbj_demo/article/details/81503078 1 核对你手机的 CPU 架构 目前的 Android 支持的架构 CPU架构描述armeabi第5代 ARM v5TE&#xff0c;使用软件浮点运算&#xff0c;兼容所有ARM设备&#xff0c;通用性强&#xff0c;速度慢armeabi-v7a第…

supports_CSS的@supports规则简介(功能查询)

supports The two general approaches to tackling browsers’ uneven support for the latest technologies are graceful degradation and progressive enhancement. 解决浏览器对最新技术的不均衡支持的两种通用方法是平稳降级和逐步增强 。 Graceful degradation leverage…

CSS3条件判断——@supports

CSS3条件判断——supports CSS3条件判断&#xff0c;听起来“不明觉厉”,如果你对CSS稍为熟悉一点的话&#xff0c;你会发现CSS中的“ media ”就是条件判断之一。是的&#xff0c;在 CSS3的条件判断规范文档 中包含了两个部分&#xff0c;其一是“media”规则&#xff0c;主要…

[DL] Default MaxPoolingOp only supports NHWC on device type CPU

在cpu运行代码时&#xff0c;发现&#xff0c;出现此类问题 参考 (16条消息) Default MaxPoolingOp only supports NHWC on device type CPU_被可爱咬了一口的博客-CSDN博客 默认值表示data_formatchannels_last&#xff0c;"NCHW"表示data将被存储为[batch,channe…

Cesium 实战 - 解决 The browser supports WebGL, but initialization failed 问题

Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题 系统环境版本试错过程解决问题 在公司内网服务器部署 Cesium 项目的时候&#xff0c;发现提示浏览器不支持 WebGL 错误&#xff0c;经尝试&#xff0c;确认 Cesium 1.101.0 以及之前的版本是可以…

Pandas告警UserWarning: pandas only supports SQLAlchemy connectable

Pandas告警UserWarning: pandas only supports SQLAlchemy connectable 一、报错信息二、老的书写方式三、新的书写方式 一、报错信息 使用老的书写方式从数据库导入数据到pandas, 会打出一条warning信息&#xff1a; UserWarning: pandas only supports SQLAlchemy connecta…

The browser supports WebGL, but initialization failed

1. 问题背景 在windows server上的浏览器通过cesium预览地图展示&#xff0c;会报错&#xff0c;导致地图不能正常预览。 2. 验证浏览器是否支持WebGL 这里有两个网站地址进行验证。 https://get.webgl.org/ https://webglreport.com/?v2 3. 修改浏览器配置&#xff08…

@supports使用方法

原文地址&#xff1a;https://justforuse.github.io/blog/zh-cn/2018/08/supports-tutorial/ supports是CSS3新引入的规则之一&#xff0c;主要用于检测当前浏览器是否支持某个CSS属性并加载具体样式. 基本使用方式&#xff1a; supports (display: grid) {.container {color…

@supports的用法

supports我们经常在css中遇到&#xff0c;supports是用来检测浏览器是否支持css的某个属性。通常我们可以用它来处理浏览器的兼容性的问题。用supports来判断浏览器是否支持这个css属性&#xff0c;如果支持的话&#xff0c;我们写的css样式就会起作用&#xff0c;否则的话不会…

CSS中 特性查询(@supports)详解及使用

1. 简介 CSS中的 supports 用于检测浏览器是否支持 CSS 的某个属性。其实就是条件判断&#xff0c;如果支持某个属性可以写一套样式&#xff0c;如果不支持某个属性&#xff0c;可以提供另外一套样式作为替补。可以放在代码的顶层&#xff0c;也可以嵌套在任何其他条件组规则中…

记一次破解blob加密视频网站的过程

现在很多主流的视频网站几乎都是用到了blob的加密&#xff08;其实也不算是加密&#xff09;&#xff0c;效果是隐藏了视频源的地址&#xff0c;其背后的本质还是通过一段执行一段js拿到视频的切片文件&#xff0c;然后进行拼接播放。就像下面这样的 其实对于普通情况来说&…

视频加密技术的实与破解

知识付费盛行的当下&#xff0c;视频加密技术也算是有了又一个好的应用场景&#xff0c;本场 Chat 您将学到如下内容&#xff1a; 初步了解视频加密技术的前世今生视频大厂采用的视频技术云厂商采用的视频技术多维度的安全对比如今付费视频网站都采用哪些加密方式实打实的下载…

金盾金狮点盾云鹏保宝等加密视频录屏翻录提取教程

采用独家方法特殊方式打开录屏工具&#xff0c;理论上通杀所有的检测进程的加密视频播放器的检测&#xff0c;不被检测。 使用方法很简单&#xff1a; 点击 打开录屏工具&#xff0c;就可以以特殊方式加载录屏工具。 然后就可以开始录屏了。 下载&#xff1a;jsxc.neocities.…