位置: IT常识 - 正文

vue 预览 word(vue预览word加水印)

编辑:rootadmin
vue 预览 word

推荐整理分享vue 预览 word(vue预览word加水印),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue预览word文件并能打印,vue预览word插件,vue预览word文件并能打印,vue预览word插件,vue预览word文件并能打印,vue预览word文件并能打印,vue预览word文件二进制流,vue预览word插件,内容如对您有帮助,希望把文章链接给更多的朋友!

最近做的项目要求实现预览word, pdf,png等文件功能,pdf以及png都很简单,轻松百度搞定,但是word预览研究了好久,所以特此记录分享。

前端实现预览word分为两种,一种是上传前预览(也就是前端使用input或者组件等选择文件后直接预览,此时还没有上传给后端,我定义为纯前端预览),一种是上传后预览(就是文档已经上传到后端,通过后端给的文件流实现预览)

一、先说第一种的实现方式:

首先下载安装docx-preview,引入

npm install xlsx docx-preview --saveimport { defaultOptions, renderAsync } from "docx-preview";var docxx = require("docx-preview");

我这里使用的是element ui 上传组件

<el-upload    class="upload-demo"    action=""    :http-request="myUpload"    :show-file-list="false"    >    <span class = "uploadEnclosure">上传附件</span>    </el-upload>

选择文件以后

myUpload(content){console.log(content);const downUrl = URL.createObjectURL(content.file)const a = document.createElement('a');this.$refs.selectFileNameBox.innerHTML = "";this.$refs.selectFileNameBox.append(a);a.innerHTML = content.file.name;a.href = downUrla.download = content.file.name;a.target = '_blank';const addTypeArray = content.file.name.split(".");const addType = addTypeArray[addTypeArray.length - 1];console.log(addType);this.uploadFileName = content.file.name;this.uploadFileObj = content.file;if (addType === "pdf") {const url = URL.createObjectURL(content.file);console.log(url);this.xzbjPreviewIframeSrc = url;this.xzbjIframeIsShow = true;this.xzbjDialogPreviewDiv = false;this.xzbjPreviewImgUrl = "";this.xzbjDocPreviewFlag = false;this.previewBoxStyle = "height:400px;position: relative;overflow:hidden;"}else if(addType === "doc" || addType === "docx" || addType === "word"){console.log("word文件预览")this.xzbjPreviewImgUrl = "";this.xzbjPreviewIframeSrc = "";this.xzbjDialogPreviewDiv = false;this.xzbjDocPreviewFlag = true;this.xzbjIframeIsShow = false;// 将file转为bufferlet fr = new FileReader();fr.readAsArrayBuffer(content.file);fr.addEventListener("loadend",(e) => {console.log("loadend---->", e)let buffer = e.target.result;this.docxRender(buffer);},false);}//".rar, .zip, .doc, .docx, .xls, .txt, .pdf, .jpg, .png, .jpeg,"else if (["png", "jpg", "jpeg","bmp"].includes(addType)) {this.xzbjPreviewIframeSrc = "";this.xzbjIframeIsShow = false;this.xzbjDocPreviewFlag = false;this.imgPreview(content.file);this.previewBoxStyle = "height:400px;position: relative;overflow:auto;"} else if (addType === "rar" || addType === "zip" || addType === "7z") {this.filePreviewInfo = "请下载附件进行查看"this.xzbjPreviewImgUrl = "";this.xzbjPreviewIframeSrc = "";this.xzbjDocPreviewFlag = false;this.xzbjDialogPreviewDiv = true;this.$message({message: "该文件类型暂不支持预览",type: "warning",});return false;}else{this.filePreviewInfo = "该文件类型暂不支持预览"this.xzbjPreviewIframeSrc = "";this.xzbjIframeIsShow = false;this.xzbjDialogPreviewDiv = true;this.xzbjPreviewImgUrl = "";this.xzbjDocPreviewFlag = false;this.$message({message: "请仅允许上传后缀为pdf、doc、docx、word、jpg、png、bmp、rar、zip、7z的附件",type: "warning",});}}// 渲染docxdocxRender(buffer) {let bodyContainer = document.getElementById("demoDocContainer");renderAsync(buffer, // Blob | ArrayBuffer | Uint8Array, 可以是 JSZip.loadAsync 支持的任何类型bodyContainer, // HTMLElement 渲染文档内容的元素,null, // HTMLElement, 用于呈现文档样式、数字、字体的元素。如果为 null,则将使用 bodyContainer。this.docxOptions // 配置).then(res => {console.log("res---->", res)})},vue 预览 word(vue预览word加水印)

下面是图片预览核心代码

imgPreview(file) {// 看支持不支持FileReaderif (!file || !window.FileReader) return;// console.log(/^image/.test(file.type), "---/^image/.test(file.type)")if (/^image/.test(file.type)) {// 创建一个readerlet reader = new FileReader();// 将图片将转成 base64 格式reader.readAsDataURL(file);// 读取成功后的回调reader.onload = ({ target }) => {this.xzbjDialogPreviewDiv = false;this.xzbjPreviewImgUrl = target.result; //将img转化为二进制数据// console.log("target:", target);};}},

这样就实现了纯前端预览word功能

二、接下来实现 配合后端预览word

根据后端返回的流预览word

request({    method: "get",    url: "/notice/noticeFileView",    responseType: 'blob',    params:{    id:row.id    },    headers: {    "Content-Type": 'application/json'    },    }).then(res=>{    console.log(res,"---文件预览");       if(row.suffix.includes("pdf")){    this.previewPdfFn(res);    // let blob = new Blob([res],{    // type: 'application/pdf'    // })    // let url = window.URL.createObjectURL(blob);    this.xqPreviewImgUrl = "";    this.xqPreviewPdfUrl = this.previewPdfFn(res);    this.xqPdfPreviewFlag = true;    this.xqDocPreviewFlag = false;    this.xqPerviewStyle = "height:600px;position: relative;overflow:hidden"    }else if(row.suffix.includes("docx") || row.suffix.includes("doc")|| row.suffix.includes("word")){    console.log("预览word")    this.xqDocPreviewFlag = true;    let blob = new Blob([res],{    type: 'application/pdf'    })    this.$nextTick(()=>{    console.log(this.$refs.xqDocContainer,"---this.$refs.xqDocContainer")    docxx.renderAsync(blob, this.$refs.xqDocContainer)    })       } else if (row.suffix === ".rar" || row.suffix === ".zip" || row.suffix === "7z") {    this.xqDocPreviewFlag = false;    this.xzbjPreviewImgUrl = "";    this.xzbjPreviewIframeSrc = "";    this.$message({    message: "该文件类型暂不支持预览",    type: "warning",    });    return false;    }else if([".png", ".jpg", ".jpeg",".bmp"].includes(row.suffix)){    let blob = new Blob([res],{    type: 'application/pdf'    })    console.log(blob,"---blob")    let url = window.URL.createObjectURL(blob);    this.xqPreviewImgUrl = url;    this.xqPdfPreviewFlag = false;    this.xqDocPreviewFlag = false;    this.xqPreviewPdfUrl = "";    this.xqPerviewStyle = "height:600px;position: relative;overflow:auto"    }       this.xqDialogPreviewDiv = false;    }).catch(err=>{    console.log(err,"--文件预览失败")    })

完毕

下面是参考链接:

https://www.jianshu.com/p/8e1e90570c52 预览word excel

https://blog.csdn.net/kaimo313/article/details/127012225 vue里使用docx-preview预览docx文件

https://volodymyrbaydalka.github.io/docxjs/

最后是一个好友赠送的组件

<template><div class="docx-preview-wrap"><h4><input type="file" id="file" accept=".docx" @change="getFile"/></h4><div id="bodyContainer"></div></div></template><script>import { defaultOptions, renderAsync } from "docx-preview";console.log(defaultOptions);export default {name: 'DocxPreview',data () {return {docxOptions: {className: "kaimo-docx-666", // string:默认和文档样式类的类名/前缀inWrapper: true, // boolean:启用围绕文档内容的包装器渲染ignoreWidth: false, // boolean:禁用页面的渲染宽度ignoreHeight: false, // boolean:禁止渲染页面高度ignoreFonts: false, // boolean:禁用字体渲染breakPages: true, // boolean:在分页符上启用分页ignoreLastRenderedPageBreak: true, // boolean:在 lastRenderedPageBreak 元素上禁用分页experimental: false, // boolean:启用实验功能(制表符停止计算)trimXmlDeclaration: true, // boolean:如果为true,解析前会从​​ xml 文档中移除 xml
本文链接地址:https://www.jiuchutong.com/zhishi/300043.html 转载请保留说明!

上一篇:过来人告诉你:Java学到什么程度可以找工作?(过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你)

下一篇:nodejs的下载安装(nodejs 下载)

  • 怎么操作博客推广(怎么操作博客推送)

    怎么操作博客推广(怎么操作博客推送)

  • iqoo8怎么打开节日壁纸(iqooz15g开关在哪)

    iqoo8怎么打开节日壁纸(iqooz15g开关在哪)

  • vivox70pro+怎么设置来信息闪光灯(vivox70pro怎么设置5g网络)

    vivox70pro+怎么设置来信息闪光灯(vivox70pro怎么设置5g网络)

  • 微信怎么更新呢(微信怎么更新呀?)

    微信怎么更新呢(微信怎么更新呀?)

  • 微信视频显示网络不佳(微信视频显示网络中断)

    微信视频显示网络不佳(微信视频显示网络中断)

  • 腾讯会员怎么开通一个月(腾讯会员怎么开通便宜)

    腾讯会员怎么开通一个月(腾讯会员怎么开通便宜)

  • 在拼多多上买东西能被微信好友看到吗(在拼多多买东西被骗了怎样来维护自身的权益)

    在拼多多上买东西能被微信好友看到吗(在拼多多买东西被骗了怎样来维护自身的权益)

  • 支付宝能扫微信二维码付款吗(支付宝能扫微信码吗)

    支付宝能扫微信二维码付款吗(支付宝能扫微信码吗)

  • kindle充电器和安卓通用吗(kindle充电头用1a还是2a)

    kindle充电器和安卓通用吗(kindle充电头用1a还是2a)

  • 华为预估保修期会变吗(华为预估保修期和激活时间)

    华为预估保修期会变吗(华为预估保修期和激活时间)

  • 后置自拍怎么看到画面(后置摄像自拍)

    后置自拍怎么看到画面(后置摄像自拍)

  • 苹果手机来电图片怎么设置全屏(苹果手机来电图标)

    苹果手机来电图片怎么设置全屏(苹果手机来电图标)

  • e51650v2相当于什么cpu(e51650v2相当于什么水平)

    e51650v2相当于什么cpu(e51650v2相当于什么水平)

  • 淘宝确认收货后钱多久到卖家账户(淘宝确认收货后如何退款)

    淘宝确认收货后钱多久到卖家账户(淘宝确认收货后如何退款)

  • wifi盒光信号变成红色一直闪(wifi盒光信号变红)

    wifi盒光信号变成红色一直闪(wifi盒光信号变红)

  • 拼多多店铺地址在哪里看(拼多多店铺地址查询)

    拼多多店铺地址在哪里看(拼多多店铺地址查询)

  • 微信星标好友的含义(微信星标好友的意思)

    微信星标好友的含义(微信星标好友的意思)

  • vivonex3屏幕是三星的吗(vivonex3s手机屏幕怎么样)

    vivonex3屏幕是三星的吗(vivonex3s手机屏幕怎么样)

  • 手机吃鸡怎么调第三人称(手机吃鸡怎么调画质最清晰)

    手机吃鸡怎么调第三人称(手机吃鸡怎么调画质最清晰)

  • 荣耀playip几级防水(华为荣耀play防不防水)

    荣耀playip几级防水(华为荣耀play防不防水)

  • 直播需要几个手机(直播需要几个手机卡才能直播)

    直播需要几个手机(直播需要几个手机卡才能直播)

  • 0x0000007f怎么修复(0x0000007f解决)

    0x0000007f怎么修复(0x0000007f解决)

  • 波特兰比尔灯塔处的晨光和海浪,英格兰多塞特郡 (© Lee Pengelly/Getty Images Plus)(波特兰在哪)

    波特兰比尔灯塔处的晨光和海浪,英格兰多塞特郡 (© Lee Pengelly/Getty Images Plus)(波特兰在哪)

  • Linux- 系统随你玩之--玩出花活的命令浏览器上(linux中suid)

    Linux- 系统随你玩之--玩出花活的命令浏览器上(linux中suid)

  • 电梯的税收筹划怎么做
  • 员工工伤住院伙食补助标准是多少
  • 增值税普通发票和电子普通发票的区别
  • 冲回多提的坏账准备分录为
  • 小微自开专票申报时怎么填写
  • 横幅属于什么发票范围
  • 小规模零申报增值税
  • 物业费计入哪里
  • 买二手房为什么要交个人所得税
  • 利用废旧物资生产设备
  • 承兑汇票丢了如何追回
  • 换汇成本太低怎么处理?
  • 幼儿园收取生活费通知
  • 老板垫付的费用怎么做凭证
  • 投资活动购建固定资产
  • 企业所得税预缴纳税申报表
  • 信息服务业税收优惠政策
  • 商品损耗怎么做会计分录
  • 个人所得税征收范围
  • win10蓝牙鼠标已连接不显示
  • 公司退股需要交什么税
  • h5实现扫码功能
  • 建筑行业预交增值税什么时候预交
  • 阿拉斯加州zip
  • 酒店采购布草如何入账
  • Win10 (21H1)Build 19043.1266更新补丁KB5005611正式版发布:附修复更新内容
  • win10商店如何改地区
  • 如何找装修公司
  • 别人说你坏话怎么发朋友圈说说
  • php中用来创建目录的函数是
  • 减免税款账务处理
  • 应交增值税明细科目怎么看
  • 劳务报酬可以扣除合理支出吗
  • 购买原材料产生的费用
  • 真菌感染手指甲空了
  • 企业缴纳职工社保比例的规定
  • 原材料按实际成本核算需设置的科目包括
  • element ui
  • 随手写-精美笔记本-日记本安卓下载
  • Vue3通透教程【十三】TS简单类型详解
  • 火车票抵税申报表怎么填
  • 员工办理健康证需要什么材料
  • 为博客园开发了什么项目
  • python中如何创建字典
  • mongodb的分片集群的组成部分
  • 筹建期的收入要交企业所得税吗
  • 不动产销售额是否为免税
  • 社会团体会费票据查询
  • 劳务派遣的开票税点是多少
  • 小规模都是季度报税吗
  • 非营利企业的劳动力需求有哪些特点
  • sqlserver时间戳数据更新时也修改默认时间
  • 月末研发支出会结转至哪个账户
  • 认缴股权的转让
  • 农业发展公司有没有库存商品的
  • 所得税预缴申报表中营业成本怎么计算
  • 计划成本法存货会计分录
  • 股东以固定资产投资要交增值税?
  • 企业用支付宝
  • 加油站汽油损耗分析
  • 什么是生产成本,有哪些组成内容
  • win mysql
  • centos6.9 yum
  • freebsd9.3安装教程
  • 电脑window8系统怎么样
  • win10系统电脑无限重启
  • linux重复命令
  • win8进入电脑休眠后怎么唤醒
  • vsftpd 虚拟用户权限
  • 平板电脑截图
  • 电脑主板驱动
  • 预装win7旗舰版
  • bootstrap滚动监听效果
  • js获取指定元素
  • python抓取软件界面数据
  • input限制数字大小
  • python语言的特殊符号
  • 基于jQuery和Bootstrap的设计报告的参考文献
  • Jquery ajax请求导出Excel表格的实现代码
  • 张江税务所地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设