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

news2024/12/27 13:01:44

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文件中找到以下代码注释掉即可

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

2023年淮阴工学院五年一贯制专转本数字电子技术考试大纲

2023年淮阴工学院五年一贯制专转本数字电子技术考试大纲 一、考核对象 本课程的考核对象是五年一贯制高职专转本电子科学与技术专业普通在校生考生。 二、考试目的及总体要求 通过本课程的考试&#xff0c;检查学生对掌握数字电路的基础理论知识的掌握程度&#xff0c;是否…

5大值得推荐的客户协作平台

提起在线文档平台&#xff0c;我们应该都会想到最常用的金山文档&#xff0c;石墨文档等&#xff0c;但是它们也只是实现了文档的在线多人协作&#xff0c;并没有形成完整系统的企业知识体系&#xff0c;文档协作的最高境界是要实现像书一样沉淀团队知识&#xff0c;像水一样促…

React | React脚手架解析

✨ 个人主页&#xff1a;CoderHing &#x1f5a5;️ React.js专栏&#xff1a;React脚手架解析 &#x1f64b;‍♂️ 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; &#x1f4ab; 系列专栏&#xff1a;吊打面试官系列 16天学会Vue 11天学会React Node专栏 &#…

接口自动化测试数据处理:技术人员必备的一项技能

目录 前言&#xff1a; 1.定义测试数据结构 2.从文件中加载测试数据 3.使用faker库生成随机测试数据 4.在测试用例中使用测试数据 总结&#xff1a; 前言&#xff1a; 在进行接口自动化测试时&#xff0c;测试数据的准备和处理是至关重要的一环。测试数据的准确性和完整性…

heic格式转化jpg的3种好用方法

如果你是使用iOS手机的用户&#xff0c;那么一定对HEIC格式不陌生。虽然HEIC格式可以保存原始图像质量&#xff0c;但它只能在苹果手机或Mac电脑上打开。如果我们想要在安卓或Windows系统上打开&#xff0c;就需要使用转换软件将HEIC格式转换成常用的JPG格式。HEIC 是一种新型的…

设计模式总览 —— 导论

什么是 GOF 对接口编程而不是对实现编程。优先使用对象组合而不是继承。 设计模式的基石 封装继承多态顺序判断循环 设计模式总览 创建型模式&#xff08;Creational Patterns&#xff09; 单例&#xff08;Singleton&#xff09;模式原型&#xff08;Prototype&#xff09…

mysql免安装版本(简化版)

1&#xff1a;解压mysql-5.7.26-winx64 2&#xff1a;添加data文件夹 3&#xff1a;添加my.ini文件 内容如下&#xff1a; port "3306" # 设置mysql的安装目录 basedir "D://tools\mysql-5.7.26-winx64\mysql-5.7.26-winx64\" # 设置mysql数据库的数…

推荐几个可以免费使用的ChatGPT工具

在ChatGPT相关API推出之后&#xff0c;各种工具如雨后春笋一般层出不穷&#xff0c;这篇文章就列举一些日常使用到的工具。 工具列表 OpenAI 在线读取任意网页内容包括视频&#xff08;YouTube&#xff09;&#xff0c;并根据这些内容回答你提出的相关问题或总结相关内容支持…

RabbitMq-接收消息+redis消费者重复接收

在接触RammitMQ时&#xff0c;好多文章都说在配置中设置属性 # rabbitmq 配置 rabbitmq:host: xxx.xxx.xxx.xxxport: xxxxusername: xxxpassword: xxxxxx## 生产端配置# 开启发布确认,就是confirm模式. 消费端ack应答后,才将消息从队列中删除#确认消息已发送到队列(Queue)pub…

算法记录lday3 LinkedList 链表移除 + 链表构建 + 链表反转reverse

今日任务 ● 链表理论基础 ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表 链表理论基础 建议&#xff1a;了解一下链接基础&#xff0c;以及链表和数组的区别 文章链接&#xff1a;https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A…

【SpringBoot源码剥析】| 依赖管理

目录 一. &#x1f981; 依赖管理Ⅰ. 部分dependency导入时为啥不需要指定版本&#xff1f;1.1 父依赖启动器的工作1.2 问题答案 Ⅱ. 项目运行依赖的JAR包是从何而来的?2.1 分析源码2.2 问题答案 二. &#x1f981; 总结 一. &#x1f981; 依赖管理 Ⅰ. 部分dependency导入时…

Linux——中断和时间管理(中)

目录 驱动中的中断处理 中断下半部 软中断 tasklet 工作队列 驱动中的中断处理 通过上一节的分析不难发现&#xff0c;要在驱动中支持中断&#xff0c;则需要构造一个 struct irqaction的结构对象&#xff0c;并根据IRQ 号加入到对应的链表中(因为 irq_des 已经在内核初始…

golang微服务项目通用流水线

golang微服务项目通用流水线 工作中随着业务越来越大&#xff0c;微服务的项目也越来越多&#xff0c;最开始的时候是一个服务一个流水线&#xff0c;然后还分了三个环境&#xff0c;也就是一个服务三个流水线&#xff0c;后面就越来越不利于管理维护了&#xff0c;因此&#…

马云的创业故事及他人生中的摆渡人-创建阿里巴巴(五)

著名的“18罗汉大会” 以及“马云成功背后的男人” 1999年大年初五&#xff0c;杭州湖畔花园小区&#xff0c;18个人坐满了一屋子&#xff0c; 这是阿里巴巴的第一次全员大会&#xff0c;马云激情澎湃地讲了2个小时&#xff0c;并且专门请了摄影师全程录像。 这就是传说中的…

SD卡无法识别怎么办?

SD卡是一种可移动存储设备&#xff0c;广泛应用于各种电子设备&#xff0c;如Android智能手机、平板电脑或相机等&#xff0c;您可以将SD卡连接到计算机以传输一些文件。但有些时候&#xff0c;当您打开文件资源管理器后&#xff0c;可能会发现您的SD卡不显示&#xff0c;无法使…

即时通讯IM源码应该如何做好安全防护?

即时通讯&#xff08;Instant Messaging&#xff0c;IM&#xff09;在现代社会中已经成为了人们日常生活中必不可少的沟通工具。无论是在家庭、教育、商业或政府等各行各业中&#xff0c;IM都扮演着重要的角色。然而&#xff0c;随着IM使用率的增加&#xff0c;相应的安全威胁也…

程序员基础的硬件知识(cpu、主板、显卡、内存条等)

一、综合简介 cpu&#xff1a;负责运算数据&#xff0c;就等于你的大脑运算速度。 显卡&#xff1a;本来没有显卡&#xff0c;后来因为大家对图片要求越来越高&#xff0c;视频要求越来越高&#xff0c;啥都让cpu算太累了&#xff0c;于是分出来一个&#xff0c;专门用来计算…

华为云服务EulerOS release 2.0 版本安装大象数据库

1连接华为服务器 下载并按照命令yum install -y postgresql-server 2 初始化 postgresql-setup initdb 3启动 systemctl start postgresql.service 启动服务 4开放端口(如果防火墙已经关闭则可以省略) iptables -I INPUT -p tcp --dport 5432 -j ACCEPT 5验证安装结果&…

Cortex-A7中断详解(二)

CP15协处理器 CP15协处理器一般用于存储系统管理&#xff0c;但是在中断中也会使用到&#xff0c;CP15协处理器一共有16个32位寄存器。CP15协处理器的访问通过以下指令完成&#xff1a; MRC&#xff1a;将CP15协处理器中的寄存器数据读到ARM寄存器中。MCR&#xff1a;将ARM寄…

坚持刷题2个月,终于去了梦寐以求的大厂....

写在前面 最近一个读者和我反馈&#xff0c;他坚持刷题2个月&#xff0c;终于去了他梦寐以求的大厂&#xff0c;薪资涨幅非常可观&#xff0c;期间面字节跳动还遇到了原题…并表示目前国内的大厂和一些独角兽&#xff0c;已经越来越效仿硅谷公司的做法&#xff0c;通过面试给定…