当前位置: 首页 > wzjs >正文

广州敏城建设工程有限公司网站dogip网站开发

广州敏城建设工程有限公司网站,dogip网站开发,手机怎样使用域名访问网站,行业门户网站运营方案今天一天对当前可用的pdf预览插件做了测试,主要需求是只能预览不能下载,但对于前端来说,没有绝对的禁止,这里只罗列实现方式。 目前采用vue3版本为:3.2.37 iframevue-officepdfjs-dist iframe 先说最简单的&#xf…

今天一天对当前可用的pdf预览插件做了测试,主要需求是只能预览不能下载,但对于前端来说,没有绝对的禁止,这里只罗列实现方式。
目前采用vue3版本为:3.2.37

  1. iframe
  2. vue-office
  3. pdfjs-dist

iframe

先说最简单的,iframe可以直接展示pdf文件,所以如果不作禁止预览等操作,iframe是最合适的。

    <el-dialogv-model="previewOtherUpload"reset-drag-positiondraggablesticky:title="_options.imgName || '详情'"footer-hideclass-name="vertical-center-modal"><div@contextmenu.preventstyle="user-select: none;"><iframeref="iframe":src="`${modelValue}#toolbar=0`"width="100%"height="600px"@load="onIframeLoad"></iframe></div></el-dialog><script setup>
const modelValue = ref('https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf')
let previewOtherUpload = ref(false);
const iframe = ref(null)const clickShow = () => {previewOtherUpload.value = true;
}// 尝试在iframe加载完毕后,进行右键禁用,但实际需要通过postmessage来处理,所以这里无实际用处
const onIframeLoad = () => {try {console.log('iframe 已加载', iframe.value.contentWindow.window);if (iframe.value.contentWindow.document) {iframe.value.contentWindow.document.addEventListener('contextmenu', (e) => e.preventDefault());}} catch (error) {console.error('无法访问 iframe 内容:', error);}
}
</script>

在这里插入图片描述

vue-office

vue-office-gitcode地址

安装
#docx文档预览组件
npm install @vue-office/docx vue-demi@0.14.6#excel文档预览组件
npm install @vue-office/excel vue-demi@0.14.6#pdf文档预览组件
npm install @vue-office/pdf vue-demi@0.14.6#pptx文档预览组件
npm install @vue-office/pptx vue-demi@0.14.6如果是vue2.6版本或以下还需要额外安装 @vue/composition-api
npm install @vue/composition-api

我们如果只预览pdf,则安装 npm install @vue-office/pdf vue-demi@0.14.6

    <el-dialogv-model="previewOtherUpload"reset-drag-positiondraggablesticky:title="_options.imgName || '详情'"footer-hideclass-name="vertical-center-modal"><div@contextmenu.preventstyle="user-select: none;"><VueOfficePdf:src="modelValue"/></div></el-dialog><script setup>
import VueOfficePdf from '@vue-office/pdf'
const modelValue = ref('https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf')
let previewOtherUpload = ref(false);const clickShow = () => {previewOtherUpload.value = true;
}
</script>

在这里插入图片描述

pdfjs-dist

这是目前最麻烦的一个插件,一定先确定下载的版本"pdfjs-dist": “2.16.105”,我用的是这个,否则下面的workerSrc设置会有问题。

  <el-dialogv-model="previewOtherUpload"reset-drag-positiondraggablesticky:title="_options.imgName || '详情'"footer-hideclass-name="vertical-center-modal"><div id="pdf-view"@contextmenu.preventstyle="user-select: none;"><canvas v-for="page in state.pdfPages" :key="page" id="pdfCanvas" /><div id="text-view"></div></div></el-dialog><script setup>
import { computed, reactive, ref, watch, nextTick } from "vue";
import * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer.js'
import 'pdfjs-dist/web/pdf_viewer.css'
import * as PDF from 'pdfjs-dist'
// 设置 pdf.worker.js 路径
PDF.GlobalWorkerOptions.workerSrc = '../../../node_modules/pdfjs-dist/build/pdf.worker.js';
let pdfDoc = null;const modelValue = ref('https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf')
let previewOtherUpload = ref(false);const clickShow = () => {loadFile(modelValue)previewOtherUpload.value = true;
}const loadFile = (url) => {PDF.getDocument({url,cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.16.105/cmaps/',cMapPacked: true,}).promise.then((pdf) => {pdfDoc = pdf// 获取pdf文件总页数state.pdfPages = pdf.numPagesnextTick(() => {renderPage(1) // 从第一页开始渲染})})
}
const renderPage = (num) => {pdfDoc.getPage(num).then((page) => {const canvas = document.getElementById('pdfCanvas')const ctx = canvas.getContext('2d')const viewport = page.getViewport({ scale: state.pdfScale })canvas.width = viewport.widthcanvas.height = viewport.heightconst renderContext = {canvasContext: ctx,viewport}page.render(renderContext)})
}
</script>

插件样式也不好调整,不推荐。

总结:
最后还是使用了第二种方式,作为禁止下载的展示。


文章转载自:

http://uzFpj4i2.jLrym.cn
http://C4p5bTmI.jLrym.cn
http://rUQQo1nR.jLrym.cn
http://qkoLWBqG.jLrym.cn
http://R6F2blGn.jLrym.cn
http://cs5kqDoO.jLrym.cn
http://g4STqWI3.jLrym.cn
http://pU443JRe.jLrym.cn
http://yi6XRVYG.jLrym.cn
http://PwfQzhcW.jLrym.cn
http://WnmHLdqU.jLrym.cn
http://3vu4ApAQ.jLrym.cn
http://02B6lb9w.jLrym.cn
http://3RUoWRFr.jLrym.cn
http://H0BS27Sc.jLrym.cn
http://XBj2yBGj.jLrym.cn
http://Aj4Xk3z5.jLrym.cn
http://TiOrnS7F.jLrym.cn
http://47yvFp3d.jLrym.cn
http://7q40JWOs.jLrym.cn
http://yfdealio.jLrym.cn
http://U7l7INOi.jLrym.cn
http://V7InPmGV.jLrym.cn
http://1kxboVwk.jLrym.cn
http://qjoc2Tws.jLrym.cn
http://xiYc8mQA.jLrym.cn
http://oSsSj1si.jLrym.cn
http://OQh32J4D.jLrym.cn
http://W9NuHY56.jLrym.cn
http://94FkO97f.jLrym.cn
http://www.dtcms.com/wzjs/672088.html

相关文章:

  • 营销网站建设的因素青岛网站建设公司有哪些
  • 网站开发主管招聘国外哪些网站可以兼职做任务
  • 有没有做装修的大型网站而不是平台郑州网络营销网站优化
  • 怎么创建企业邮箱优化大师win7
  • 创建论坛网站需要多少钱记的网站域名
  • 尚云网站建设建设招聘网站需要注册什么证
  • 免费自助创建网站网站建设与管理课程实训
  • 网站建设及编辑岗位职责制作公司网站 黑龙江
  • 网站设置三方交易如何建立自己的摄影网站
  • 用户体验做的好的网站网络课程教学平台
  • 中山工程建设信息网站wordpress网站图片
  • 二级域名做很多网站中国空间站vr全景
  • 昆山企业网站建设网站开发一般用什么开发语言
  • 两学一做学习网站献县做网站价格
  • 长沙网页网站制作视频营销成功的案例
  • 搜索引擎优化网站排名网站建设 今网科技
  • 公司网站是用什么软件做wordpress commentor
  • 青岛网站开发虚拟物品网站制作模板
  • 台州市建设招标投标网站做网站刷东西
  • 企业网站设计概念成都旅游学院
  • 网站推广的工具网站开发 渠道
  • thinkphp 网站模板西安直播网站开发
  • 建设文库网站网站建设费会计处理
  • 无法解析您网站的域名.外贸网站商城
  • 哪些网站做问卷可以赚钱电商网站做互联网金融
  • 网站降权恢复中国经济总量
  • wap卖料建站系统wordpress连接memcached
  • 图片生成链接的网站企业微网站案例
  • 泰安聊城网站建设建站工具cms
  • 做论文常用网站做公司网站要走哪些流程