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

news/2024/7/20 1:14:30 标签: 小程序, pdf.js

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.niftyadmin.cn/n/266108.html

相关文章

RocketMq消息

消息发送 发送同步消息 public class SyncProducer {public static void main(String[] args) throws Exception{DefaultMQProducer producernew DefaultMQProducer(/*please_rename_unique_group_name*/"group1");producer.setNamesrvAddr("localhost:9876&q…

浅述 国产仪器 1761程控模块电源

1761程控模块电源是在自动测试环境中提供偏置功率和对部件或最终产品提供激励的理想设备&#xff0c;是测试系统必备的测试仪器。适用于研发、设计、生产制造等自动测试领域。 1761程控模块电源为用户选配电源提供了灵活性&#xff0c;根据需要可选购1&#xff5e;8种&#xff…

Spring中的设计模式及使用示例

Spring中的常用设计模式及使用示例 单例模式&#xff08;Singleton Pattern&#xff09;工厂模式&#xff08;Factory Pattern&#xff09;抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;建造者模式&#xff08;Builder Pattern&#xff09;原型模式&#xff0…

音视频八股文(6)-- ffmpeg大体介绍和内存模型

播放器框架 常用音视频术语 • 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a;即特定格式的多媒体文件&#xff0c; 比如mp4、flv、mkv等。 • 媒体流&#xff08;Stream&#xff09;&#xff1a;表示时间轴上的一段连续数据&#xff0c;如一 段声音…

函数式编程#6组合函数-基础用法

组合函数-基础用法 文章目录 组合函数-基础用法模板原型组合函数举例普通函数实现上面组合功能的弊端组合新功能函数&#xff1a;参数增删减、位置调换 模板原型 f,g都是函数,都作为一级参数传递。x是被两函数处理的二级参数。函数作为参数传递的规则:内部由右往左调用函数。首…

停用词(stop words)+TF-IDF实现

一、什么是停用词&#xff1f; 在汉语中&#xff0c;有一类没有实际意义的词语&#xff0c;比如组词“的”&#xff0c;连词“以及”&#xff0c;副词“甚至”&#xff0c;语气词“吧”&#xff0c;被称为停用词。一个句子去掉这些停用词&#xff0c;并不影响理解。所以&#…

servlet技术

功能 对客户端发送的数据进行读取和拦截读取客户端请求的隐含数据运行结果或者生成结果发送响应的数据 Servlet技术特点 高效率 Servlet本身就是一个Java类&#xff0c;在运行的时候位于同一个Java虚拟机中&#xff0c;可以快速地响应客户 端的请求并生成结果。在Wb服务器…

Python 爬虫浏览器伪装技术

1 网站常见的反爬虫和应对方法 一般网站从三个方面反爬虫&#xff1a;用户请求的Headers&#xff0c;用户行为&#xff0c;网站目录和数据加载方式。 前两种比较容易遇到&#xff0c;大多数网站都从这些角度来反爬虫。第三种一些应用ajax的网站会采用&#xff0c;这样增大了爬…