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

vue项目中使用vue-pdf或pdf.Js,实现在页面上预览pdf内容

一。vue-pdf

1. 安装vue-pdf

npm   install --save  vue-pdf

2.页面引入 js部分

import pdf from "vue-pdf";data(){return {pdfUrl: "",pageTotal: 0,}
}mounted(){this.pdfUrl = pdf.createLoadingTask(pdf文件路径url);// 获取页码this.pdfUrl.promise .then((pdf) => (this.pageTotal = pdf.numPages)).catch((error) => {});
}

3.html部分

<pdfv-for="item in pageTotal":src="pdfUrl":key="item":page="item"></pdf>

二、pdfJs

需要下载PDF.js库。您可以从官方GitHub仓库(https://github.com/mozilla/pdf.js)下载最新版本的PDF.js。

1.引入

Vue项目中找到public/index.html文件,并在文件的标签内添加以下代码以引入PDF.js库

<script src="./pdfjs/build/pdf.js"></script>

2.Vue 组件中使用元素展示 PDF 页面

<template><div><canvas ref="pdfCanvas"></canvas></div>
</template>

3.使用 PDF.js 提供的 API 加载和渲染 PDF 文件

mounted() {this.loadPDF();},methods: {async loadPDF() {const pdfUrl = 'path/to/your/pdf/file.pdf'; // 替换为您的PDF文件路径const loadingTask = window.PDFJS.getDocument(pdfUrl);const pdf = await loadingTask.promise;const canvas = this.$refs.pdfCanvas;const context = canvas.getContext('2d');const page = await pdf.getPage(1); // 加载第一页const viewport = page.getViewport({ scale: 1 });canvas.height = viewport.height;canvas.width = viewport.width;const renderContext = {canvasContext: context,viewport: viewport};await page.render(renderContext);}}

4.页面切换和缩放

<template><div><canvas ref="pdfCanvas"></canvas><button @click="previousPage">Previous Page</button><button @click="nextPage">Next Page</button></div>
</template>

5.页面切换和缩放功JavaScript部分

data() {return {pdf: null,currentPage: 1};},mounted() {this.loadPDF();},methods: {async loadPDF() {// ...},async previousPage() {if (this.currentPage > 1) {this.currentPage--;await this.renderPage(this.currentPage);}},async nextPage() {if (this.currentPage < this.pdf.numPages) {this.currentPage++;await this.renderPage(this.currentPage);}},async renderPage(pageNumber) {const page = await this.pdf.getPage(pageNumber);const viewport = page.getViewport({ scale: 1 });const canvas = this.$refs.pdfCanvas;const context = canvas.getContext('2d');canvas.height = viewport.height;canvas.width = viewport.width;const renderContext = {canvasContext: context,viewport: viewport};await page.render(renderContext);}}
http://www.lryc.cn/news/325135.html

相关文章:

  • 为什么静态成员函数不能是虚函数
  • python环境移植(本机windows到离线windows环境)
  • 蓝桥杯day9刷题日记
  • 阿里云数据库Cassandra的产品价格
  • 离散制造企业MES与流程企业MES的区别
  • 中国象棋C++
  • 记录一下目前为止的算法成长
  • AI大模型学习在数控系统工艺优化与智能制造中的应用
  • 安卓findViewById 的优化方案:ViewBinding与ButterKnife(一)
  • map和set(三)——红黑树
  • Day26 HashMap
  • 某蓝队面试经验
  • 【Linux】 centos7安装卸载SQL server(2017、2019)
  • 面试算法-110-课程表
  • 注册前后端php的检测
  • Redis:什么是redis?①
  • 【课程】MyBatisPlus视频教程
  • 如何使用人工智能和ChatGPT来优化营销转化率
  • Ubuntu 22.04上构建libvirt源码错误解决
  • 游戏客户端面经
  • AS,idea,maven,gradle
  • ElasTool v3.0 程序:材料弹性和机械性能的高效计算和可视化工具包
  • Redis入门级详解(一)
  • java算法题每日多道六
  • C# 特性(Attribute)
  • Redis 教程系列之Redis 配置(三)
  • Java实验03
  • 安卓studio连接手机之后,一两秒之后就自动断开了。问题解决。
  • 数字科技优化金融供给,内外协同激活新质生产力
  • 「Linux系列」Shell 输入/输出重定向