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

原生小程序如何使用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文件中找到以下代码注释掉即可

在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/15365.html

相关文章:

  • 在 CentOS 7 上安装 MinIO 的步骤
  • uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点
  • esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
  • Spring Boot教程之Spring Boot简介
  • JsonCpp
  • 数据集的重要性:如何构建AIGC训练集
  • WPF学习
  • AI剧本拆解,教你利用AI快速拆解剧本
  • FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(四)
  • Android 灭屏和亮屏的监听
  • 七、CANdelaStudio入门-Variant概念与应用
  • 前有谷歌的“生存指南”,后有金山系的“表格编程”,均登热榜
  • 【数据结构】简单快速过一遍红黑树
  • FIR半带滤波器
  • 9.Java中异常处理机制是什么
  • Java 创建线程池的三种方式
  • 九耶丨阁瑞钛伦特-Java分布式(一)
  • MATLAB算法实战应用案例精讲-【智能优化算法】哈里斯鹰(HHO)(论文篇二)
  • 集成灶/小家电语音提示芯片方案-WTN6040-8S唯创知音自主研发
  • Android类似微信聊天页面教程(Kotlin)四——数据本地化
  • leetcode657. 机器人能否返回原点
  • 移动通信网络频段大全
  • OJ练习第91题——文本左右对齐
  • 3.7 Linux shell脚本编程(分支语句、循环语句)
  • C语言必背经典程序代码
  • 【VM服务管家】VM4.0软件使用_1.3全局模块类