vue2使用pdfjs-dist实现pdf预览(iframe形式,不修改pdfjs原来的ui和控件)

news2024/10/22 15:28:16

前情提要

在一开始要使用pdf预览的时候,第一次选的是vue-pdf,但是vue-pdf支持的功能太少,缺少了项目中需要的一项-复制粘贴功能
之后我一顿搜搜搜,最终貌似只有pdfjs能用
但是网上支持text-layer的貌似都是用的2.09那个版本。

使用textlayer出现的报错:

因为我项目中还有用到vue-pdf的地方,在我npm install pdfjs-dist之后,因为他们的依赖冲突库库报错,最后不得已用了本地的pdfjs

但是因为wiki内容不足,没找到最新版本的textlayer怎么调用,然后加上各种报错最后还是放弃了使用自己调用的pdfjs,选择了最方便的使用浏览器自带的pdfjs(这个问题也多,微信自带浏览器打开不显示)

这两天有空了,又找了找网上的代码,最终在某站上看到一个大佬用的是本地pdfjs,然后没用getDocment的方法,直接用本地的服务访问了pdfjs

vue实现案例

  1. 先去官网下载最新的pdfjs-dist
    https://github.com/mozilla/pdf.js/releases
    我下载的这个版本官网说是可以支持旧版浏览器在这里插入图片描述
  2. 下载之后放到vue项目中的public目录下
    在这里插入图片描述
    在 web/viewer.mjs中 这段代码可以注释调,好像是避免跨域问题

// const fileOrigin = new URL(file, window.location.href).origin;
      // if (fileOrigin !== viewerOrigin) {
      //   throw new Error("file origin does not match viewer's");
      // }
  1. 这时候就可以访问下看看了
    http://localhost:80/js/pdfjs/web/viewer.html (你自己的项目访问地址)
  2. 然后给你项目中的pdf地址前面加上这个本地的地址后用iframe访问就可以了
<iframe
	:src="pdfurl"
	frameborder="0"
	width="100%"
	height="850px"
></iframe>
this.pdfurl = '/js/pdfjs/web/viewer.html?file=' + data.data.ulr;

在这里插入图片描述

  1. 用dom可以修改iframe中的样式(同源的情况下)
document.getElementsByTagName('iframe')[0].onload = function () {
			var iframeDocument =
				this.contentDocument || this.contentWindow.document;
			var styleElement = iframeDocument.createElement('style');
			styleElement.textContent = 'body { background-color: blue; }';
			iframeDocument.head.appendChild(styleElement);
		};

感谢下https://github.com/Laomai-codefee这个博主,很强

这个是博主用pdfjs实现的项目案例和一些使用方法(react)
https://github.com/Laomai-codefee/pdfjs-annotation-extension/blob/main/README_CN.md

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式AI博客目录

文章目录 环境搭建ubuntu下载安装c版opencv4.7.0和4.5.0 & 安装opencv4.5.0报错及解决方法ubuntu系统vscode配置c版opencv & 编译运行c播放视频代码&#xff08;包含&#xff1a;vscode使用copencv&#xff0c;创建CmakeList.txt&#xff0c;创建编译项目&#xff09;u…

【干货】2024期中考试成绩公布方式

本学期的期中考试即将拉开帷幕&#xff0c;而考试后的成绩发布往往是老师觉得最复杂耗时的工作。老师完全可以抛弃这种费力耗时的“笨方法”&#xff0c;只需要易查分&#xff0c;即可一分钟完成成绩发布的工作。教师发布省心&#xff0c;家长查询安心。 易查分是一个在线的查询…

智能健康推荐:SpringBoot技术应用

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户管理 基于智能推荐的卫生健康系统的系统管理员可以管理用户管理&#xff0c;可以对用户管理信息添加修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户管理信息管理界面 5.1.2 科室类型管理 系统管理员可以查看对…

让你的MacOS剪切板变得更加强大,如何解决复制内容覆盖的问题

MacOS的日常使用过程中&#xff0c;肯定少不了复制粘贴&#xff0c;不论是文本内容还是文件&#xff0c;复制粘贴是避不开的操作&#xff0c;如果需要复制粘贴的内容不多&#xff0c;那么普通的复制粘贴就可以完成了&#xff0c;但是当有同样的内容需要输入不同的地方的时候&am…

SAM应用:医学图像和视频中的任何内容分割中的基准测试与部署

医学图像和视频中的任何内容分割&#xff1a;基准测试与部署 目录 摘要&#xff1a;一、引言1.1 SAM2 在医学图像和视频中的应用 二.结果2.1 数据集和评估协议2.2 二维图像分割的评估结果 三 讨论四 局限性和未来的工作五、方法5.1数据来源和预处理5.2 微调协议5.3 评估指标 总…

flask项目创建、flask使用、python使用flask、pycharm创建flask项目

创建项目前python和pycharm要装好 打开pycharm创建项目&#xff1a; 虚拟空间下载flask: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Flask 下载好后&#xff1a;下载扩展 pip install Flask-SQLAlchemy -i https://mirrors.aliyun.com/pypi/simple/ 目录结构&…

结合空口分析BLE AUDIO之PAC

PAC&#xff0c;published audio capability用于声明audio服务能力&#xff0c;是BLE AUDIO核心服务之一&#xff0c;下面以手机和耳机为例&#xff0c;结合空口分析PAC到底有哪些交互内容&#xff1a; 1&#xff1a;读取Source/Sink PAC 首先手机会读取左耳的Source PAC和Si…

创客项目秀 | 基于XIAO ESP32S3 Sense 的最小 DIY 相机

作者&#xff1a;Md. Khairul Alam 故事背景 我一直对间谍小工具和微型电子产品非常着迷。我一直想创造一个可以装在口袋里的微型相机&#xff0c;能够悄无声息地捕捉精彩瞬间。随着技术的进步和像 Xiao ESP32S3 Sense 这样功能强大的微控制器的出现&#xff0c;我终于有机会实…

自然语言处理:第五十三章 Ollama

代码&#xff1a; ollama/ollama: Get up and running with Llama 3.1, Mistral, Gemma 2, and other large language models. (github.com) 官网&#xff1a; Ollama 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易…

Linux YUM设置仓库优先级

1.安装yum-plugin-priorities优先级插件 yum install yum-plugin-priorities -y 2.设置仓库优先级 vim /etc/yum.repos.d/local.repo [local] namecentos7.5 baseurlfile:///mnt enable1 gpgcheck0 priority1 注释&#xff1a; priority1 #数字越小代表优先级越高&#xff…

测试用例评审流程优化

测试用例评审是QA日常工作流程中的关键一环&#xff0c;是QA同学完善测试用例、交流测试经验的好机会。 负责组内测试用例建设以来&#xff0c;作者对于评审流程做了一些优化工作。本文作者将整个优化过程中的心得体会做了一个总结&#xff0c;希望能给大家带来帮助。 01 原始流…

rom定制系列------小米6x_MIUI14_安卓13刷机包修改写入以及功能定制 界面预览

在接待一些定制化系统中。有很多工作室或者一些特殊行业的友友需要在已有固件基础上简略修改其中的功能。方便使用。例如usb调试默认开启。usb安装设置以及usb安装与内置删减一些app的定制服务。今天给友友预览其中小米6X此款机型定制相关的一些界面与功能演示。 定制机型以及…

多线程基本知识

目录 程序&#xff0c;进程&#xff0c;线程 程序 含义 我的理解&#xff1a; 举例 进程 含义 我的理解&#xff1a; 举例 线程 含义 我的理解&#xff1a; 举例 多线程的并发 并发的含义 并发和并行的区别 并发含义 区别 线程的创建 继承 Thread 类创建多线…

缺失d3dcompiler43.dll如何修复?总结5种简单方法

d3dcompiler_43.dll是Microsoft DirectX的一个关键组件&#xff0c;对于图形渲染和多媒体应用至关重要。DirectX是由微软开发的一套多媒体编程接口&#xff0c;它提供了硬件加速的图形和声音功能&#xff0c;以及其他与多媒体和游戏相关的功能。d3dcompiler_43.dll在DirectX 11…

时代在召唤—电力行业投资逻辑解析及公司参考

每个经济体不同阶段都需要有不同的蓄水池来承载社会经济增长及产业发展溢出的财富和资金&#xff0c;20多年前&#xff0c;我们选择了地产。现在地产不行了&#xff0c;必须创造新的蓄水池&#xff0c;目前来看&#xff0c;应该大力发展资本市场应该算符合当前阶段比较好的选择…

软件测试的真正目的是什么?该澄清下误解了

对测试工作目的的认识误区 在IT行业&#xff0c;其实一直对软件测试&#xff0c;测试这个工作的目的&#xff0c;一直有着不太准确的认识。 各种说法都有&#xff0c;比较流行&#xff0c;被很多IT工作甚至测试从业者认可的有下面两种&#xff1a; 测试是为了发现Bug 大家一…

音乐专辑管理系统测试报告

一、项目背景 音乐市场规模逐年扩大&#xff0c;音乐专辑管理系统是一款以音乐专辑为核心&#xff0c;为音乐产业上下游企业提供一个高效的音乐专辑管理工具&#xff0c;以便更好地管理音乐专辑&#xff0c;采用前后端分离的方法来实现&#xff0c;使用了数据库来存储相关的数…

Mac 电脑安装redis

1、首先检查电脑是否安装 brew 命令&#xff1a; #打开Mac自带的终端&#xff0c;输入下面命令 brew --version如下图&#xff0c;可以看到我的 brew 正常的&#xff0c;且对应版本是4.0.17-63-g32f2258 如果你的电脑执行上面命名报错&#xff1a;zsh: command not found: br…

海康硬盘录像机NVR与国标GB28181协议国标视频云服务平台LiteGBS的衔接

随着互联网技术的不断进步和智能终端设备的普及&#xff0c;流媒体视频平台逐渐成为数字化时代的重要产物&#xff0c;并在人们的日常生活中占据越来越重要的地位。所以经常碰到用户咨询我们&#xff0c;研发的视频平台能否支持海康的硬盘录像机接入&#xff0c;由于对现场没有…

AniVu 2.0 | 多功能RSS订阅与下载神器

AniVu是一个集RSS订阅与更新、比特洪流下载、视频播放为一体的工具。使用MVI架构&#xff0c;完全采用Material You设计风格。主要功能包括&#xff1a;订阅RSS、更新RSS、阅读RSS&#xff0c;自动更新RSS订阅&#xff0c;下载RSS文章中的BT种子或磁力链接附件&#xff0c;已下…