位置: IT常识 - 正文

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

编辑:rootadmin
vue docx-preview实现docx文件在线预览

推荐整理分享vue docx-preview实现docx文件在线预览,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

        之前一般做项目进行文件浏览的时候基本都是用的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; }}vue docx-preview实现docx文件在线预览

实现结果

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

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

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

<el-dialog v-model="dialogVisible" class="dialogLarge" append-to-body :destroy-on-close="true"> //此处是弹窗名称 <template #header> <div class="dialogHeader"> <div>预览</div> </div> </template> //此处是预览图片的Img组件 <img w-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;}
本文链接地址:https://www.jiuchutong.com/zhishi/293742.html 转载请保留说明!

上一篇:ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署

下一篇:奥杜邦中心的一只靛蓝彩鹀,美国宾夕法尼亚州 (© Vicki Jauron/Getty Images)(奥杜邦的祈祷经典语录)

  • 当月认证发票进项税转出能不能第二个月转出
  • 公司组织出国旅游费用
  • 招待费和福利费每年标准
  • 建筑企业增值税纳税义务发生时间如何确定
  • 营改增对电信业的影响及对策
  • 多缴纳的附加税怎么退
  • 服装厂里面
  • 全年一次性奖金计税方式2023
  • 研发部门领用材料会计分录
  • 公司租个人车辆如何办理
  • 非独立核算的分公司如何报税
  • 货运发票和提供建筑服务的专票备注怎么写?
  • 金税四期什么时候结束
  • 广告费和业务宣传费15%还是30%
  • 公司帮员工缴纳个税,不从工资里扣,如何做账
  • 跨年红冲发票影响所得税吗
  • 固定资产转投资性房地产是会计政策变更吗
  • 付临时工工资计入什么科目
  • mac符号在哪里
  • 增值税专用发票有几联?
  • 无发票材料可以入材料账吗
  • windows闹钟
  • 任务栏没反应怎么重启
  • 怎么关闭win10搜索栏
  • 一般纳税人购进税控收款机抵扣
  • 不需要认证的进项税额怎么处理
  • babylon.exe进程有什么作用 babylon进程是什么文件
  • 已计提的存货跌价准备计入成本吗
  • MAC OS X Yosemite开启深色模式的方法
  • 转让旧房及建筑物的扣除项目
  • 唱吧地图
  • 150讲轻松搞定python网络爬虫
  • pytorch新手入门
  • css选择器怎么用
  • c+c#
  • 通用机打发票还能用吗
  • 现金零星支出大还是小
  • 进项大于销项怎么结转增值税
  • 免税农产品的范围有哪些
  • 支付银行贷款利息现金流量表填哪里
  • 跨境电商小规模运营负责那些工作
  • 股票印花税和佣金是一样的吗
  • 建筑业预缴增值税计算公式
  • 开票一定要确认收入嘛
  • 开票机号填错了怎么办
  • 实收资本不能动吗
  • 购车增值税可以不交吗
  • sqlserver高版本数据库文件转低版本
  • mysql5.7版本安装教程
  • 职工给单位造成损失可以申请仲裁吗
  • 小规模可以不用软件做账吗
  • 外贸常用的付款方式有哪些
  • 怎么打印税务登记证明备案表
  • 其他应收款与其他应付款对冲分录
  • 子公司向子公司销售存货
  • 借别人的承兑后期还现钱可以吗?
  • mysql数据库优化总结
  • win8分屏快捷键
  • directx?
  • 怎么知道游戏是什么引擎
  • linux系统怎么停止ping
  • js开发android应用
  • jquery和css的区别
  • shell脚本实现ssh登录
  • python利用for循环求1到100的奇数之和
  • vue组件互相嵌套
  • jq判断浏览器
  • jquery的实现原理
  • [置顶]星陨计划
  • android怎么运行
  • 如何将文件夹导入idea
  • 房屋设备租赁费
  • 北京市网上税务局(自然人版)
  • 无偿划转暂行规定
  • 山东潍坊昌邑房产网
  • 如何在电子税务局申报社保
  • 补缴印花税分录
  • 增值税抵扣联怎么装订
  • 如何挑选烟叶等级
  • 怎么查询手机发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设