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

分享基于PDF.JS的移动端PDF阅读器代码

一、前言

在之前的文章《分享基于PDF.js的pdf阅读器代码》里提到了PC端基于PDF.js的阅读器,本文将提供针对移动端的版本。

二、pdfViewer

为了能够直接使用,这里分享一下经过简单修改后能直接使用的pdfViewer代码:

pdfViewer代码目录(pdfViewer代码包本文查看附件):

在这里插入图片描述

以Vue工程为例:
①将pdfViewer代码放到pubilc目录下(pdfViewer代码包本文查看附件)
②使用下面的链接进行pdf访问:http://xxx/pdfViewer/web/viewer.html?file=pdfUrl,例如:http://localhost:9999/pdfViewer/web/viewer.html?file=http://localhost:9999/pdfViewer/web/compressed.tracemonkey-pldi-09.pdf

其中,http://xxx 为项目访问地址。

为了能够直接访问到viewer.html,对于Vite项目需要做一些配置:

// src\router\index.ts

const router = createRouter({
  history: createWebHistory(),
  ...
})
// build\vite\plugin\html.ts

/**
 * Plugin to minimize and use ejs template syntax in index.html.
 * https://github.com/anncwb/vite-plugin-html
 */
import type { PluginOption } from 'vite'
import { createHtmlPlugin } from 'vite-plugin-html'

export function configHtmlPlugin(env: ViteEnv) {
  const htmlPlugin: PluginOption[] = createHtmlPlugin({
    pages: [
      {
        filename: '/index.html',
        template: '/index.html',
      },
      {
        filename: '/mobile-viewer/viewer.html',
        template: '/public/pdfViewer/web/viewer.html'
      }
    ]
  })
  return htmlPlugin
}

// build\vite\plugin\index.ts
import { configHtmlPlugin } from './html'

/**
 * 配置 vite 插件
 * @param viteEnv vite 环境变量配置文件键值队 object
 * @param isBuild 是否是 build 环境 true/false
 * @returns vitePlugins[]
 */
export function createVitePlugins(viteEnv: ViteEnv) {
  const vitePlugins: (PluginOption | PluginOption[])[] = [
    // have to
    vue()
  ]

  // 加载 html 插件 vite-plugin-html
  vitePlugins.push(configHtmlPlugin(viteEnv))

  return vitePlugins
}
// vite.config.ts

import { createVitePlugins } from './build/vite/plugin'

export default ({ command, mode }: ConfigEnv): UserConfig => {
  return {
   // 其它配置
    ...
    // 加载插件
    plugins: createVitePlugins(viteEnv)
  }
}


预览效果:

在这里插入图片描述

:在部分比较老的系统,比如Android 7上,无法正常显示。


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

相关文章:

  • kotlin sortedBy 与sortedWith的区别
  • 递归构建树菜单节点
  • 《鸿蒙系统AI技术:筑牢复杂网络环境下的安全防线》
  • python注意事项:range遍历越索引现象、列表边遍历边修改出现的问题
  • 【机器学习:八、逻辑回归】
  • docker minio镜像arm64架构
  • 二个命令解决docker 拉取镜像超时的问题
  • PDF样本图册转换为一个链接,随时打开无需印刷
  • 元宇宙虚拟展厅是什么?有哪些优势?
  • Qt对话框布局调整
  • 前端程序员_职场生存法则
  • Golang序言全面学习-前序
  • 网络药理学:分子对接之二:PDB数据库的使用(已知PDB ID)、PubChem数据库如果没有3D结构
  • Windows10 Paddlepaddle-GPU CUDA CUDNN 版本选择
  • java设计模式day03--(结构型模式:代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式、享元模式)
  • 突破最强算法模型,Transformer !!
  • 【深度学习 Pytorch】2024年最新版本PyTorch学习指南
  • 字节AI产品面经|反反复复,无非这100个问题
  • Qt 模仿企业微信图标实现按钮图片文字上下结构
  • Python 全栈系列267 telegraf、influxdb和grafana
  • 【软件测试专栏】测试分类篇
  • 信号与槽,QMainWindow中常用类的使用
  • vue3_对接腾讯_实时音视频
  • 鸿蒙(API 12 Beta6版)超帧功能开发【顶点标记】
  • 算法知识点————数论【最大公约数】【快速幂】【分解质因数】
  • 顶象图标点选模型识别