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

原生小程序如何使用pdf.js实现查看pdf,以及关键词检索高亮

1.下载pdf.js库文件

前往 pdf.js 的 官网 下载库文件,下哪个版本都可以,后者适用于旧版浏览器,所以我下载的是后者

在这里插入图片描述

下载完成后,因为微信小程序打包的限制,我将库文件放到项目的后台系统了,在h5端处理会比在小程序端处理方便,最后就用web-view标签嵌入到小程序即可;

2.将下载好的pdf.js导入h5项目

2.1、目录结构

在这里插入图片描述

2.2、h5端使用pdf.js

新建一个文件夹–>新建一个.vue文件用来展示pdf文件–>使用iframe标签承接pdf文件
运行能打开默认的pdf文件,就证明成功了

在这里插入图片描述

pdf.vue

<template><!-- pdf详情页 --><div><iframe :src="../../../public/pdfjs-3.5.141-legacy-dist/web/viewer.html" width="100%" height="700px;"></iframe></div>
</template><script >import { useRouter } from "vue-router";
export default {name: 'pdf',setup() {document.title = 'pdf详情页'  // 修改本页面网页标题const route = useRouter()return {}}
}
</script><style></style>

注:有可能会出现以下报错,只需要找到viewer.html,将script标签的type修改成module即可

在这里插入图片描述
在这里插入图片描述

然后运行项目,本页面能打开默认的pdf文件就证明成功了

在这里插入图片描述

2.3、嵌入到小程序中

在这里插入图片描述

<template><!-- pdf详情页 --><div><iframe :src="file" width="100%" height="700px;"></iframe></div>
</template><script >import { useRouter } from "vue-router";
export default {name: 'pdf',setup() {document.title = 'pdf详情页'  // 修改本页面网页标题const route = useRouter()console.log(route.currentRoute.value.query.file);let file = route.currentRoute.value.query.file; // 获取当前url参数if (file) {file = `../../../public/pdfjs-3.5.141-legacy-dist/web/viewer.html?file=${file}` // 找到参数则展示指定pdf} else {file = '../../../public/pdfjs-3.5.141-legacy-dist/web/viewer.html'  // 若没有找到参数,打开默认pdf文件}return {file}}
}
</script><style></style>

通过小程序传来的参数,h5端就能访问到pdf,利用pdf.js自带的关键词检索,就能完成业务需求啦

在这里插入图片描述

如果出现跨域问题的话,在viewer.js文件中找到以下代码注释掉即可

在这里插入图片描述

在这里插入图片描述

相关文章:

原生小程序如何使用pdf.js实现查看pdf,以及关键词检索高亮

1.下载pdf.js库文件 前往 pdf.js 的 官网 下载库文件&#xff0c;下哪个版本都可以&#xff0c;后者适用于旧版浏览器&#xff0c;所以我下载的是后者 下载完成后&#xff0c;因为微信小程序打包的限制&#xff0c;我将库文件放到项目的后台系统了&#xff0c;在h5端处理会比在…...

「数据架构」MDM实现失败的主要原因

我经常参与一个组织的MDM程序&#xff0c;当他们在一个失败的项目之后向InfoTrellis请求帮助进行清理&#xff0c;或者开始尝试X&#xff0c;以实现对某些人来说非常困难的目标时。主数据管理实现失败的原因有很多&#xff0c;但是没有一个是由于在这些场景中使用的责备游戏的原…...

【Java基础 1】Java 环境搭建

&#x1f34a; 欢迎加入社区&#xff0c;寒冬更应该抱团学习&#xff1a;Java社区 &#x1f4c6; 最近更新&#xff1a;2023年4月22日 文章目录 1 java发展史及特点1.1 发展史1.2 Java 特点1.2.1 可以做什么&#xff1f;1.2.2 特性 2 Java 跨平台原理2.1 两种核心机制2.2 JVM…...

2023-4-26-C++11新特性之正则表达式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…...

python接口自动化测试 requests库的基础使用

目录 简单介绍 Get请求 Post请求 其他类型请求 自定义headers和cookies SSL 证书验证 响应内容 获取header 获取cookies 简单介绍 requests库简单易用的HTTP库 Get请求 格式&#xff1a; requests.get(url) 注意&#xff1a;若需要传请求参数&#xff0c;可直接在 …...

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…...

IPTV系统架构的分析与研究

1 引言   IPTV业务是伴随着宽带互联网的飞速发展而兴起的一项新兴的互联网增值业务,它利用宽带互联网的基础设施&#xff0c;以家用电视机和电脑作为主要终端 &#xff0c;利用网络机顶盒(STB,Set -TopBox) &#xff0c;通过互联网协议来传送电视信号.提供包括 电视节 目在 内…...

workerman开发者必须知道的几个问题

1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程&#xff0c;cmd窗口关掉后服务即停止。 windows系统下无法在一个…...

golang Gin实现websocket

golang使用 Gin实现 websocket&#xff0c;这里笔者重新搭建一个项目 1、创建项目安装依赖 项目名为 go-gin-websocket 在指定文件夹下&#xff0c;新建项目文件夹 go-gin-websocket 进入项目文件夹&#xff0c;打开cmd窗口&#xff0c;在项目&#xff08;go-gin-websocket&a…...

冯·诺依曼体系结构与初始操作系统

目录 冯诺依曼体系结构 冯诺依曼体系结构图 内存 外存 网卡和磁盘 结构之间运算速度的差异 缓冲区 初始操作系统 概念 操作系统上边与下边分别有什么 从上到下依次顺序解析 用户 用户操作接口 系统调用接口 操作系统四项管理 驱动 硬件 冯诺依曼体系结构 冯诺…...

软件测试之黑盒测试的具体方法详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …...

图形编辑器:历史记录设计

大家好&#xff0c;我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录&#xff0c;做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录&#xff0c;支持撤销重做功能&#xff0c;需要两个栈&#xff1a;撤销&#xff0…...

ubuntu22.04下挂载第二块硬盘

文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说&#xff0c;我希望知道&#xff0c;ubuntu到底发现了几块硬盘。用命令&#xff1a;lsblk 显示结果如下&#xff1a; 有两块硬盘&#xff1a…...

举例说明.net中in与out的作用与区别

-----作用 在 .NET 中&#xff0c;in 和 out 是用于泛型类型参数的修饰符&#xff0c;它们用于指定参数类型的协变性和逆变性。 - in 修饰符&#xff1a;表示这个泛型类型参数是协变的。也就是说&#xff0c;in 类型参数可以从较特殊的类型隐式转换为较通用的类型。例如&…...

Java常见的100道面试题(内附答案及代码示例)持续更新

什么是Java程序&#xff1f; Java程序是一组可执行的代码&#xff0c;由Java编译器编译生成&#xff0c;可以在Java虚拟机&#xff08;JVM&#xff09;上运行。 public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!&qu…...

策略设计模式知多少

目录 目标 概述 实现 目标 熟悉策略设计模式&#xff0c;了解策略设计模式的使用场景、具体实现。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模式关注的重点在于对象的行为&#xff08;通信和交互&#xff09;&#xff0c;而非对象的创建方…...

第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent

文章目录 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent在 UNIX/Linux 和 macOS 系统上为非根实例启动 ISCAgent在 Microsoft Windows 系统上启动 ISCAgent 自定义 ISCAgent 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Li…...

嵌入式安卓开发:使用Camera2获取相机

文章目录 Camera2介绍Camera2的主要API类介绍CameraManager通过CameraManage获取Cameracharacteristics通过CameraManage获取CameraDevice从CameraDevice获取CameraCaptureSession预览效果 参考 Camera2介绍 从Android 5.0开始&#xff0c;Google 引入了一套全新的相机框架 Ca…...

阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B

阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器&#xff0c;3.2 GHz睿频&#xff0c;g8i实例采用阿里云全新CIPU架构&#xff0c;可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…...

设计模式——组件协作模式之观察者模式

文章目录 前言一、“组件协作” 模式二、Observer 观察者模式1、动机2、模式定义3、伪代码示例①、第一种方案&#xff0c;最朴素的方式②、第二种方案&#xff0c;重构使得遵循DIP原则&#xff1a;③、进一步的小优化&#xff1a;④、修改使得支持多个观察者&#xff1a; 4、结…...

工业质检落地新思路:拆解SimpleNet如何用‘特征空间加噪’搞定缺陷检测

工业质检革命&#xff1a;SimpleNet如何用特征空间扰动突破小样本缺陷检测瓶颈 在PCB板生产线上&#xff0c;一个肉眼几乎不可见的焊点虚接可能导致整批产品报废&#xff1b;在汽车零部件装配车间&#xff0c;细微的划痕可能引发后续使用中的安全隐患。传统工业质检依赖人工目检…...

压接 vs 焊接:高速连接器组装工艺的选型指南与实战对比

摘要/前言在通信设备、工业控制及数据中心硬件设计中&#xff0c;连接器的组装工艺选择直接影响产品的可靠性、可维护性与生产良率。压接&#xff08;Press-Fit&#xff09;与焊接&#xff08;Soldering&#xff09;是当前通孔连接器最主要的两种电气互连方式。压接依靠过盈配合…...

从零到一:ComfyUI IPAdapter 图像风格迁移终极指南

从零到一&#xff1a;ComfyUI IPAdapter 图像风格迁移终极指南 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 你是否曾梦想过将自己拍摄的照片变成大师级的艺术作品&#xff1f;或者想把朋友的肖像变成…...

解放你的B站缓存视频:3步让m4s文件变身为通用MP4格式

解放你的B站缓存视频&#xff1a;3步让m4s文件变身为通用MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经在B站缓存了精彩的教…...

基于RP2040与CircuitPython的互动声光按钮:从硬件到代码的完整实现

1. 项目概述&#xff1a;一个能听会“说”的互动按钮几年前&#xff0c;我第一次接触嵌入式开发时&#xff0c;被那些能感知物理世界并做出回应的“智能”小玩意儿深深吸引。从简单的闪烁LED&#xff0c;到能根据环境光调整亮度的灯带&#xff0c;再到能播放声音的互动装置&…...

如何用Path of Building物品制作系统打造终极装备:5个简单步骤

如何用Path of Building物品制作系统打造终极装备&#xff1a;5个简单步骤 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding 你是否曾为《流放之路》中装备制作耗费大量通货却得…...

RK3568开发板TB-96AI-3568CE深度评测:从核心接口到AI应用实战

1. 从芯片到板卡&#xff1a;TB-96AI-3568CE的设计哲学当一块芯片从图纸走向现实&#xff0c;成为一块可以握在手中的开发板时&#xff0c;这中间的路程远不止是简单的引脚引出和电源接通。我接触过不少基于RK3568的方案&#xff0c;但拿到贝启科技这块TB-96AI-3568CE时&#x…...

零碳园区绿电直供技术的挑战与解决方案

一、难点问题 二次系统&#xff0b;储能推高初投 篇幅有限仅展示了部分 根据650号文 &#xff0c;绿电直连项目必须配置继电保护、安全稳定控制装置和通信设备等二次系统 &#xff0c;以确保项目的安全性和稳定性。这些强制性配置显著增加了项目的初始投资成本。 专线造价与全周…...

MySQL通用查询日志写Webshell:绕过过滤的侧信道攻击详解

1. 从常规注入到日志利用&#xff1a;一个被忽视的攻击路径在渗透测试或者安全审计中&#xff0c;我们常常会遇到一些“硬骨头”——目标系统对常见的SQL注入利用方式做了严格的过滤。outfile、dumpfile这些直接写文件的函数被禁用了&#xff0c;drop database这类高危操作也被…...

嵌入式ADC性能评估:CDBCAPTURE系统改造与实战调试指南

1. 项目概述&#xff1a;CDBCAPTURE系统与嵌入式ADC性能评估在嵌入式系统开发&#xff0c;尤其是涉及模拟信号采集的领域&#xff0c;工程师们常常面临一个核心挑战&#xff1a;如何准确、高效地评估模数转换器&#xff08;ADC&#xff09;在真实系统环境下的性能&#xff1f;是…...