Vue学习之:在 vue2 中引入 pdf.js 并配置使其能工作

embedded/2024/10/21 5:49:52/

安装

  • 不同版本的 pdfjsnode_modules 中的目录不太一样,如果你想让他正常运行就按照我下面的来
  • 确保你的 nvm 版本是 18.17 如果不是的话,建议你配置跟我调成一样的,否则很容易出问题
nvm install 18.17.0
nvm use 18.17.0
  • 安装 pdfjs,指定版本号 @2 如果你默认下的话会下载 4 开头的版本,会有各种问题
npm install pdfjs-dist@2
  • 运行以下命令以安装处理类私有方法的 Babel 插件:
npm install --save-dev @babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods

配置

  • container 的位置 css 设置一定要是 absolute
  • 一定要配置好 EventBus
  • 导入 pdfjsLib 的时候一定要用 import * as pdfjsLib from "pdfjs-dist/build/pdf"; 不能用 import pdfjsLib from "pdfjs-dist/build/pdf"; 否则你无法设置 GlobalWorkerOptions
  • 设置 GlobalWorkerOptions 的时候,本地的如果不行,就按照下面我代码的写 pdfjsLib.GlobalWorkerOptions.workerSrc = "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.min.js";
    • 但是注意其中的 2.16.105 要换成你自己安装的 pdf.js 版本号;在 package.json 中可以查看
  • 在你的 babel.config.js 配置成:
module.exports = {plugins: ["@babel/plugin-proposal-class-properties","@babel/plugin-proposal-private-methods"]
};

示例代码

<template><div id="pageContainer"><div id="viewer" class="pdfViewer"></div></div>
</template><script>
// 导入 pdfjsLib 的方法要注意 import * as ...
import * as pdfjsLib from "pdfjs-dist/build/pdf";// 引入 eventbus 和 pdfviewer,后面需要配置
import { PDFViewer, EventBus } from "pdfjs-dist/web/pdf_viewer";// 引入样式
import "pdfjs-dist/web/pdf_viewer.css";// globalworker 设置,用 CDN 的资源;如果你本地的也可以那就可以配置成本地的 "pdfjs-dist/build/pdf.worker.min.js"
pdfjsLib.GlobalWorkerOptions.workerSrc = "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.min.js";export default {name: "PdfViewer",mounted() {this.getPdf();},methods: {async getPdf() {let eventBus = new EventBus();let container = document.getElementById("pageContainer");let pdfViewer = new PDFViewer({container: container,eventBus: eventBus,	});let loadingTask = pdfjsLib.getDocument("你自己的文件.pdf");let pdf = await loadingTask.promise;pdfViewer.setDocument(pdf);}}
};
</script><style>
#pageContainer {position: absolute;			//position设置成 absolutemargin: auto;width: 80%;
}div.page {display: inline-block;
}
</style>

http://www.ppmy.cn/embedded/41942.html

相关文章

JavaScript如何使用Cookie存值

在JavaScript中&#xff0c;可以使用document.cookie来设置、读取或删除Cookie。以下是一个如何使用document.cookie来存储一个值的简单示例&#xff1a; 设置Cookie&#xff1a; // 假设我们有一个值要存储 let valueToStore Hello, World!; // 设置Cookie的名称、值和过…

线性系统(二)

线性系统&#xff08;二&#xff09; 1.直观理解线性方程组结构2. 不同解的结论3. 更一般的高斯-约旦消元法4.齐次线性方程组 链接: 线性系统&#xff08;一&#xff09; 1.直观理解线性方程组结构 长这样&#xff0c;方程就有解&#xff0c;即相交坐标。 长这样&#xff0c;…

gitlab webhook触发jenkins任务

配置jenkins 安装gitlab插件 配置jenkins job 选择gitlab webhook触发 在高级中生成token 代码仓设置 新增webhook 配置webhook 测试连接 缺点&#xff0c;不能带gitLab事件的参数&#xff01;&#xff01;&#xff01;

el-table组件选中后使用toggleRowSelection无法取消已选中的数据——bug记录-骚操作解决

先说本文重点解决的问题&#xff1a; 存在的问题&#xff1a;当右侧已选中的数据中&#xff0c;删除了左侧其他页面的数据&#xff0c;但是左侧数据切换到其他页面后&#xff0c;左侧还保留选中的状态。 最近在写后台管理系统的时候&#xff0c;遇到一个需求&#xff1a; 左…

项目-坦克大战

增加功能 我方坦克在发射的子弹消亡后&#xff0c;才能发射新的子弹。同时实现发多颗子弹 1&#xff0c;在按下J键&#xff0c;我们判断当前hero对象的子弹&#xff0c;是否已经销毁2&#xff0c;如果没有销毁&#xff0c;就不去触发shotEnemyTank3&#xff0c;如果已经销毁&…

Microsoft 安全Copilot:适时而生的得力工具

随着数字化转型的加速&#xff0c;网络安全威胁日益增多&#xff0c;Microsoft Copilot for Security的出现恰逢其时&#xff0c;它将帮助我们更好地应对这些挑战&#xff0c;保护我们的数据和系统免受攻击。 ✦什么是Microsoft 安全Copilot✦ 概述 Microsoft 安全 Copilot 是…

SAP BSEG VS ACDOCA 差异

温习一下 ACDOCA VS BSEG matinal&#xff1a;S4 HANA 详解ACDOCA与BSEG的区别都在这了_sap acdoca-CSDN博客