Vue2.0 运用PDFjs 直接运用pdfjs-dist加载pdf文件

news/2025/2/23 13:53:32/文章来源:https://www.cnblogs.com/lannoy/p/18726101

  首先pdfjs这部分有2种加载运用方式。 1、直接npm的形式。2、直接运用其构建好的文件。本文就直接讲述的第二种。

  pdfjs官网https://mozilla.github.io/pdf.js/getting_started/#download。(划重点,注意看viewer.html,viewer.mjs)

  文件解压之后直接放入项目中,随便哪个地方。在我们的webpack.config.js里面找到CopyWebpackPlugin,直接添加对应的地址。没有就相应的plugin就自己加一下(类似下面的)。

        new CopyWebpackPlugin({patterns: [{ from: path.join(__dirname, './static'), to: dist },{ from: path.join(__dirname, '../../../versionLogs'), to: `${dist}/versionLogs` },{ from: path.join(__dirname, './public'), to: dist }]})

  添加完之后建议先检查一下,直接运用项目,在网页上输入项目地址接CopyWebpackPlugin里面配置的地址,直接查看web目录下面的模板pdf文件。如果能访问,那么恭喜你,项目已经成功了(地址是类似:(如果是上图的配置)项目地址+/web/viewer.html?file=项目地址+/web/compressed.tracemonkey-pldi-09.pdf)。

  如果项目部署在nginx里面,注意在nginx的里面需额外添加适配类型,application/javascript mjs,否则文件读取不成功。

  下面我们在探讨一下怎么动态增加屏蔽页面上部分功能。首先找到页面,也就是上面的viewer.html,找到对应的元素(不同版本的pdfjs,界面会有少许不一样),再找到async run(config)这行,插入对应的参数(下列是本人自己添加的例子,对应的2节,界面也需要自己修改,部分会缺少id,需手动添加)

  最后就是如何嵌入页面去,就一个简单的iframe嵌入就OK了。

  async run(config) {await this.initialize(config);const {appConfig,eventBus} = this;let file;let disableOpenFile;let disablePrint;let disableDownload;let disableBookmark;let language;const queryString = document.location.search.substring(1);const params = parseQueryString(queryString);file = params.get("file") ?? AppOptions.get("defaultUrl");disableOpenFile = params.get("disableopenfile") ?? 'false';disablePrint = params.get("disableprint") ?? 'false';disableDownload = params.get("disabledownload") ?? 'false';disableBookmark = params.get("disablebookmark") ?? 'false';language = params.get("language") ?? 'en-US'AppOptions.set("localeProperties", {lang: language});this.l10n = await this.externalServices.createL10n();
    if (file) {this.open({url: file});} else {this._hideViewBookmark();}if ('true' === disableOpenFile) {document.getElementById("secondaryOpenFile").style.display='none';}if ('true' === disablePrint) {document.getElementById("editorModeSeparator").style.display='none';document.getElementById("printButton").style.display='none';}if ('true' === disableDownload) {document.getElementById("downloadButton").style.display='none';}if ('true' === disableBookmark) {document.getElementById("viewBookmark").style.display='none';}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887063.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代理合约Delegatecall

Delegatecall 简介1.1.什么是 delegatecall ?.delegatecall() 是 Solidity 中的一个方法,用于从一个原始合约中调用目标合约中的一个函数。然而,与其他方法不同的是,当使用.delegatecall()在目标合约中执行函数时,上下文从原始合约中传递,即代码在目标合约中执行,但变量…

Dify知识库分段与数据清洗实战:优化LLM检索效率与回答精准性指南

将内容上传至知识库后,要对内容进行分段与数据清洗。该阶段是内容的预处理与数据结构化过程,长文本将会被划分为多个内容分段。 1 分段 由于LLM的上下文窗口有限,无法一次性处理和传输整个知识库的内容,因此需对文档 中的长文本分段为内容块。即便部分大模型已支持上传完整…

CTFShow-Web169-170:包含日志

CTFShow-Web169-170:包含日志 前端校验要求上传.zip文件,验证要求MIME类型为image/png 过滤了$、?、<、>等,考虑使用包含日志 🛠️ Web169-170 WriteUp上传.user.zip,BurpSuite上传修改后缀为ini,MIME类型修改为image/png同第一步上传图片,UA中写入一句话木马点…

DEEPSEEK-R1 模型 API 部署

DEEPSEEK-R1 模型 API 部署DeepSeek-R1 模型 API 部署一. 项目背景二. 项目需求三. 项目环境3.1 必要依赖3.2 安装依赖3.3 获取模型(1) models.py 模型文件(2) setting.py 配置文件3.4 书写 FastAPI 应用(1) main.py 文件3.5 部署到服务器(1) 启动 FastAPI 服务(2) 配置防火墙(…

制造行业CRM选哪家?中大型企业CRM首选纷享销客

在当今竞争激烈的制造行业中,企业对于客户关系管理(CRM)系统的需求日益增强,高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在众多CRM解决方案中,最终纷享销客凭借其卓越的功能性、高度的定制化能力以及出色的市场表现,成为了众多中大型企业首选的CRM…

6.2.6 特征映射和感受野

这里看英文原版更好语句更通顺,还有补充上面的图片其实就是想说明低层的CNN可以检测边缘什么的(右侧图像是中间的图像与左侧图像做卷积的结果)

MQ基础

MQ基础认识MQ结合JAVA客户端 依赖 <!--AMQP依赖,包含RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置文件 spring:rabbitmq:host: 8.2…

Excel 自动换行后批量设置单元格上下边距

excel 自动换行后 单元格的上下边距挨的很紧,看起来很不舒服 如下图 现在教大家 如何批量设置 单元格中有多行文本后的上下间距,设置成功后 如下图所示:具体步骤: 1、鼠标悬停在 excel 中的任意sheet(页签)上,右键 选择 查看代码 2、在弹出的 Visual Basic 编辑器弹框左…

开发者必备!Github Stars 存储库管理器!

gitstars —— 一个基于 Vite + Vue.js 构建的 GitHub Star 仓库管理器,旨在帮助开发者更好的管理、搜索、查阅收藏的开源项目。大家好,我是 Java陈序员。 Github 作为全球最大的开发者交流平台,拥有数不胜数的开源项目,我们会经常收藏一些开源项目,方便工作和学习。 但随…

1. Linux下 MySQL 的详细安装与使用

1. Linux下 MySQL 的详细安装与使用 @目录1. Linux下 MySQL 的详细安装与使用1. Linux 下安装 MySQL8.0 的详细安装步骤:2. Linxu 当中的MySQL 设置远程登录3. 最后:1. Linux 下安装 MySQL8.0 的详细安装步骤:查看是否安装过MySQL,如果你是用rpm安装, 检查一下RPM PACKAGE:…

临时编辑-----WordPress后台用户手册

登录 WordPress后台默认的登录链接是: https://yourdomain.com/wp-admin/ 输入你的账号(可以是邮箱,也可以是昵称)和密码,即可登录。然后就会进入到你的WordPress网站后台。 注意:忘记你的WordPress密码也不用太慌张,可以从服务器后台进入到WordPress后台。 进来的界面就…

15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用

15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用 @目录15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用1. CAdvisor监控收集+InfluxDB存储数据+Granfana展示图表 的概述1.1 CAdvisor 监控收集1.2 InfluxDB 存储数据1.3 Granfana…