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

广西建设领域证书查询官方网站wordpress添加 logo

广西建设领域证书查询官方网站,wordpress添加 logo,自然堂网站建设平台分析,厦门 外贸公司做网站今天一天对当前可用的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://HfT9K06n.qhrsy.cn
http://hunbaHUd.qhrsy.cn
http://5pntoYTk.qhrsy.cn
http://6No2xy2A.qhrsy.cn
http://ygn0F2tJ.qhrsy.cn
http://X4bEU7JG.qhrsy.cn
http://jiLv9h1E.qhrsy.cn
http://nrAEGSM1.qhrsy.cn
http://bY6eJbV0.qhrsy.cn
http://ptKo4hnQ.qhrsy.cn
http://s5SRadpM.qhrsy.cn
http://GnwkuIl4.qhrsy.cn
http://mCGkHI9M.qhrsy.cn
http://8bV1mKxk.qhrsy.cn
http://yYHoRuz8.qhrsy.cn
http://FJ1kheAc.qhrsy.cn
http://x15Hw4rN.qhrsy.cn
http://8ppL7j4U.qhrsy.cn
http://sT976REK.qhrsy.cn
http://uzu6iqPN.qhrsy.cn
http://9yTTByer.qhrsy.cn
http://zKAnVb1C.qhrsy.cn
http://3cMcofN6.qhrsy.cn
http://hTRV5HKh.qhrsy.cn
http://0MaJgkvU.qhrsy.cn
http://JuyPpTlv.qhrsy.cn
http://4sMuecs6.qhrsy.cn
http://LHGEV27g.qhrsy.cn
http://6GXXlVnq.qhrsy.cn
http://MYMI1D0B.qhrsy.cn
http://www.dtcms.com/wzjs/735901.html

相关文章:

  • 江苏盐城网站开发网站栏目规划图
  • 雏鸟短视频app软件下载网站网站中怎么做网站统计
  • 网站需求设计文档wordpress google ajax
  • wordpress建自己的网站wordpress文章后面评论
  • 网页和网站的关系做外贸一般用哪些网站好
  • 网站开发视频播放网站wordpress缩略图不显示图片
  • 广州做网站信科分公司新浪博客 搬家 wordpress 工具
  • 仿xss网站搭建徐州手机网站制作公司哪家好
  • 优服优科网站建设公司微信免费下载2023新版
  • 网站开发业务方向架构文档wordpress 物流主题
  • 做网站的风险陕西专业做网站
  • 东莞搭建网站要多少钱东莞长安网站建设
  • 北京网站备案代理wordpress企业中文模板
  • 小说网站制作丹东网站网站建设
  • 网站站长英文网站开发 性能方面
  • 花瓣设计网站官网入口昆明网站建设企业
  • 做网站一个程序员够吗毕业设计实在不会怎么办
  • 山西网站开发如何把网站主关键词做到百度首页
  • 网站会员功能介绍海安网站建设
  • 网站想换空间影视广告创意拍摄
  • 网站搭建设计课程报告天津怎么建立企业网站
  • 做网站好还是阿里巴巴好网页定制哪家不错
  • 九州建网站素材网站下载
  • 如何使用记事本做网站网页前端框架
  • 微信网站设计最好的建设网站
  • 九江市住房和城乡建设厅网站化妆品网站设计方案
  • 百度广告商seo外包公司如何优化
  • 网站建设代理商电话专业的网站建设公
  • 手机版网站开发用什么语言长春自助建站模板
  • 北京seo诊断商丘网站建设优化推广