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

做一个网站的步骤wordpress 语言文件夹

做一个网站的步骤,wordpress 语言文件夹,深圳网站建设ln12345,制作网站网页vue前端使用pdfjs与pdfdist-mergeofd 实现预览pdf并翻页,同时解决预览pdf显示模糊的问题 插件介绍 pdfdist-mergeofd插件的作用可查看这篇文章,同时使用ofdjs和pdfjs遇到的问题,和解决方法——懒加载 该插件主要是为了解决pdfjs和ofdjs同时…

vue前端使用pdfjs与pdfdist-mergeofd 实现预览pdf并翻页,同时解决预览pdf显示模糊的问题

插件介绍

pdfdist-mergeofd插件的作用可查看这篇文章,同时使用ofdjs和pdfjs遇到的问题,和解决方法——懒加载

该插件主要是为了解决pdfjs和ofdjs同时使用时产生的兼容性问题,用法与pdfjs一致

实现预览pdf

<!-- 使用el-upload获取上传的文件 --><el-uploadref="upload"action:accept="fileType":on-change="onChangeFile":before-upload="beforeFileUpload":show-file-list="false":auto-upload="false"><el-button slot="trigger" type="primary">选择文件</el-button></el-upload><!-- 控制翻页 --><div v-if="pageCount" style="text-align: center"><el-button :disabled="currentPage == 1" @click="clickPre">上一页</el-button><span>第{{ currentPage }} / {{ pageCount }}页</span><el-button :disabled="currentPage == pageCount" @click="clickNext">下一页</el-button></div>
<!-- html部分非常简单,创建一个canvas用于后续渲染即可 -->
<divref="canvasCont"class="canvas-container"><canvas ref="myCanvas" class="pdf-container"></canvas>
</div>
//这里是用的pdfdist-mergeofd,如果使用pdfjs,用法一致
import * as pdfJS from 'pdfdist-mergeofd'pdfJS.GlobalWorkerOptions.workerSrc = require('pdfdist-mergeofd/build/pdf.worker.entry')export default {name: 'xxx',data() {return {file: null,//页面宽度,根据实际调整pageWidth: 800,//页面高度,根据实际调整pageHeight: 1131,//当前页数currentPage: 0,//总页数pageCount: 0,pdfSrc: null,//尺寸限制sizeLimit: 1 * 1024 * 1024,//是否正在渲染页面,防止过快翻页renderingPage: false,}},methods: {// 上传文件async onChangeFile({ raw }) {if (!this.beforeFileUpload(raw)) {return}if (!raw) {return}this.file = rawif (raw.type === 'application/pdf') {const reader = new FileReader()this.currentType = 'pdf'reader.onload = async e => {this.pdfSrc = e.target.resultlet data = atob(reader.result.substring(reader.result.indexOf(',') + 1))this.loadPdfData(data)}reader.readAsDataURL(raw)}},loadPdfData(data) {// 引入pdf.js的字体let CMAP_URL = 'https://unpkg.com/pdfjs-dist@2.0.943/cmaps/'//读取base64的pdf流文件this.pdfData = pdfJS.getDocument({data: data,cMapUrl: CMAP_URL,cMapPacked: true})this.renderPage(1)},// 上一页clickPre() {if (!this.renderingPage && this.currentPage && this.currentPage > 1) {this.renderPage(this.currentPage - 1)}}},//下一页clickNext() {if (!this.renderingPage &&this.currentPage &&this.currentPage < this.pageCount) {this.renderPage(this.currentPage + 1)}}},// 根据页码渲染相应的PDFrenderPage(num) {this.renderingPage = truethis.pdfData.promise.then(pdf => {this.pageCount = pdf.numPagespdf.getPage(num).then(page => {// 获取DOM中为预览PDF准备好的canvasDOM对象let canvas = this.$refs.myCanvaslet ctx = canvas.getContext('2d')// 获取页面比率let ratio = window.devicePixelRatio || 1console.log(ratio)// 根据页面宽度和视口宽度的比率就是内容区的放大比率let dialogWidth = this.$refs['canvasCont'].offsetWidthlet pageWidth = page.view[2] * ratiolet scale = dialogWidth / pageWidthlet viewport = page.getViewport({ scale: scale * 2 })canvas.width = viewport.width * ratiocanvas.height = viewport.height * ratio// 缩放比率ctx.setTransform(ratio, 0, 0, ratio, 0, 0)let renderContext = {transform: [1, 0, 0, 1, 0, 0],canvasContext: ctx,viewport: viewport}page.render(renderContext).promise.then(() => {this.renderingPage = falsethis.currentPage = num})})})},// 计算角度_getRatio(ctx) {let dpr = window.devicePixelRatio || 1let bsr =ctx.webkitBackingStorePixelRatio ||ctx.mozBackingStorePixelRatio ||ctx.msBackingStorePixelRatio ||ctx.oBackingStorePixelRatio ||ctx.backingStorePixelRatio ||1return dpr / bsr},beforeFileUpload(file) {const fileName = file.nameconst fileType = this.fileType.split(',')if (fileType.every(item => !fileName.endsWith(item))) {this.$tip.warning(`请选择格式为${fileType.join('或')}类型的文件`)return false}const { sizeLimit, sizeLimitWithUnit } = thisif (file.size > sizeLimit) {this.$tip.warning(`文件大小不能超过${sizeLimitWithUnit},请重新选择`)return false}return true},}
}

解决pdf显示模糊

很多文章介绍说调整显示区域大小,这样确实可以提高清晰度,当时当显示区域有限时就无法解决,因此解决方案采用将渲染canvas区域的scale翻倍,同时通过css的transform属性将区域大小设置成原来的一半。
这种方法的原理是增加渲染区域的物理像素数,从而提高图像的分辨率。
参考文章提高PDF预览的清晰度

.pdf-container {transform: scale(0.5);transform-origin: top left;
}

效果展示

这是修改之前显示pdf的质量
在这里插入图片描述
这是修改之后的质量,变清晰了许多
在这里插入图片描述

http://www.yayakq.cn/news/932687/

相关文章:

  • 深圳公司建设网站制作动态h5网站开发
  • 域名网站购买网站建设开公司现在好做吗
  • 如何设计网站wordpress qq登陆插件
  • 建设官方网站的请示seo外包是什么
  • 怎么创建网站详细流程有什么网站是做中式酒店大堂的
  • 常做网站首页的文件名微信小程序个人网站开发
  • 苏宁网站建设做网站建设哪家便宜
  • 咖啡豆网站模板在招聘网站里做电话销售
  • sql 新建网站WordPress仿什么值得买
  • 电商详情页模板的网站顺义电大网上作业在那个网站做
  • 专业网站设计第三方余姚网站建设的公司
  • 做外汇交易的浏览什么网站青岛网站制作方法
  • 电商类网站开发计算机专业哪个专业比较好就业
  • 申请自己的网站北京 网站建设咨询顾问公司
  • apache多个网站wordpress 简书风格
  • 招商网站建设需要什么吴中区企业网络推广
  • 网站出现 503怎么了泰安人才网
  • 阿里云做的网站程序员wordpress4.9中文
  • 呼和浩特做网站的地方建工集团领导班子名单
  • 大帮手网站建设wordpress 模板 分类
  • 技术支持 英铭网站建设郑州市中原区建设局网站
  • 东莞微信网站建设竞拍网站做烂了
  • 苏州手机网站制作深圳燃气公司电话号码
  • 网站怎么添加外链友情链接怎么购买
  • 我们做网站 老公弟弟也跟着做石家庄是哪个省
  • 上行10m企业光纤做网站网站建设工作室源码
  • 昊诺网站建设一个人看的浏览器
  • 网站镜像 动态专业免费网站建设一般
  • 建设银行甘肃兰州分行网站在线制作网站表白
  • 网站服务器到期了怎么续费企业网站属于哪种网站类型