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

vue2实现pdf预览兼容低版本浏览器

一、背景

浏览器chrome 58版本、vue2项目、pdf预览

二、踩坑

一开始使用的是vue-pdf(版本4.1.0,依赖pdfjs-dist版本2.4.456)实现pdf预览,在高版本浏览器可以正常预览,但是在低版本浏览器样式错乱

三、解决方案

TouchPDF是一个简单的 jQuery Web PDF 查看器。它基于pdf.js库,支持滑动页面和缩放的移动手势。

1.特征

  • 用手指滑动到下一页或上一页
  • 捏合以放大和缩小
  • 点击指向文档部分或外部 URL 的链接
  • 添加彩色选项卡以快速访问书签页面
  • 直接在 DOM 中加载,无需 iFrame

2.支持的浏览器

Firefox、Chrome、Opera、IE >= 9、Safari、Android 浏览器

3.开始

jQuery 插件 要获取插件的本地副本,请使用 git 克隆它:

git clone https://github.com/loicminghetti/touchpdf.git

注意:您需要启动本地 Web 服务器,因为某些浏览器不允许打开 file:// url 的 PDF 文件。

将以下内容添加到文档的<head>

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="pdf.compatibility.js"></script>
<script type="text/javascript" src="pdf.js"></script>
<script type="text/javascript" src="jquery.touchSwipe.js"></script>
<script type="text/javascript" src="jquery.panzoom.js"></script>
<script type="text/javascript" src="jquery.mousewheel.js"></script>
<script type="text/javascript" src="jquery.touchPDF.js"></script>
<link href="jquery.touchPDF.css" rel="stylesheet" media="screen" /> 

vue项目中外部引入的静态资源可以放在public文件夹下,建lib或者plugins文件夹,引入路径写法

<script type="text/javascript" src="plugins/touchPDF/jquery.touchPDF.js"></script>

<!DOCTYPE html>
<html><head><!-- 其他head内容 --><link rel="stylesheet" href="<%= BASE_URL %>lib/touchPDF/touchPDF.css"></head><body><div id="app"></div><!-- 先引入jQuery --><script src="<%= BASE_URL %>lib/jquery/jquery.min.js"></script><!-- 再引入touchPDF --><script src="<%= BASE_URL %>lib/touchPDF/touchPDF.js"></script></body>
</html>

在文档中添加一个空 div,该 div 将包含 PDF 查看器

<div id="myPDF"></div>

通过在文档末尾添加以下脚本来加载 PDF 文件

<script type="text/javascript">$(function() {$("#myPDF").pdf( { source: "yourfile.pdf",loaded:loaded方法} );});
</script>

您还可以将书签选项卡添加到 PDF 显示中:

$(function() {      $("#myPDF").pdf( {source: "demo.pdf",tabs: [{title: "Tab 1", page: 2, color: "orange"},{title: "Tab 2", page: 3, color: "green"},{title: "Tab 3", page: 5, color: "blue"},]});
});

Viewer 选项

选择类型违约描述
字符串" "要显示的 PDF 文件的路径。
标题字符串“触摸PDF”要在工具栏中显示的 PDF 的标题。
制表符数组[ ]要在侧面显示的选项卡数组。语法见下文。
选项卡颜色字符串“米色”所有选项卡的默认背景颜色。可用颜色有“绿色”、“黄色”、“橙色”、“棕色”、“蓝色”、“白色”、“黑色”,您可以使用 CSS 定义自己的颜色。
禁用缩放布尔禁用 PDF 文档的缩放。默认情况下,可以使用滚动、两根手指捏合、+/- 键和工具栏按钮来缩放 PDF。
禁用滑动布尔禁用滑动到 PDF 文档的下一页/上一页。默认情况下,可以使用一根手指滑动 PDF。
禁用链接布尔禁用 PDF 文档上的所有内部和外部链接。
disableKeys布尔禁用下一页/上一页的箭头键和缩放的 +/- 键(如果启用了缩放)。
重新绘制窗口调整大小布尔在窗口调整大小时强制调整 PDF 查看器的大小。
pdf比例1定义 PDF 页面大小与选项卡大小之间的比率。
质量2设置加载的 PDF 页面的质量比率。设置为 2,当用户放大到 200% 时显示清晰。
显示工具栏布尔在文档顶部显示一个工具栏,其中包含标题、页码以及下一页/上一页和缩放的按钮。
加载功能加载 PDF 文档时(显示第一页之前)触发的处理程序。
改变功能每次显示新页面时触发的处理程序。
加载HTML字符串“正在加载 PDF”在加载文档之前显示在白页上的文本或 HTML。
加载高度整数841加载文档之前显示的白页高度(以像素为单位)(默认为 A4 高度)。
loadingWidth (加载宽度)整数595加载文档前显示的白页宽度(以 px 为单位)(默认为 A4 宽度)。

Tab 属性

必须使用具有以下属性的 json 对象定义每个选项卡:

属性类型违约描述
标题字符串命令的要在选项卡上显示的文本。少于 3 个字符的文本将水平显示,较长的文本将垂直显示。
整数命令的要链接的 PDF 文档页码。页码从 1 开始。
颜色字符串如查看器中所定义为选项卡设置不同的颜色。有关可用颜色,请参阅上文。
抵消整数0用小偏移量填充标签,以便用户知道后面有隐藏的标签。从 0 开始。
返回页首整数定义将选项卡从PDF文档顶部对齐给定的像素数。默认情况下,选项卡一个接一个地放置。
整数定义将选项卡从PDF文档底部按给定的像素数对齐。
高度整数定义为选项卡设置特定高度。默认情况下,制表符高度将取决于标题中的字符数。

四、使用注意事项

1.配置项中loaded设置加载页码页面,loaded需是一个方法,用来返回展示页码。

2.如果需要关闭鼠标缩放pdf功能,配置项中设置disableZoom为true(touchPDF文件夹下的jquery.touchPDF.js中可看到配置项字段)。同时需要隐藏工具栏中的缩小放大按钮,可以用css样式隐藏。

3.在项目中html引入css依赖时,可能会影响全局样式,需要将css文件单独放在使用pdf的页面。

vue页面写法

<template><div class="pdf-container"><link href="plugins/touchPDF/jquery.touchPDF.css" rel="stylesheet" media="screen" /><!-- 内容 --><div class="content"></div></div>
</template>

http://www.dtcms.com/a/511501.html

相关文章:

  • Android Compose 状态的概念
  • spark组件-spark core(批处理)-rdd持久化机制
  • 安全驾驶 智在掌控|腾视科技ES06终端,为车辆运营赋能
  • el-table 表格嵌套表格
  • 云南网站建设首选才力东营注册公司
  • 非对称密码算法分析技术深度剖析及未来展望
  • Arduino IDE下载安装汉化教程(附安装包,图文并茂)
  • 本地转移新分支到新仓库
  • GaussDB慢sql信息收集和执行计划查看
  • AWS IoT Core 监控与告警优化实战报告
  • 我的第一个开源项目【IOT-Tree Server】
  • 如何选择合适的倾角传感器厂家的产品以满足物联网监测需求?
  • 基于物联网与云计算的园区能耗管理平台构建与实践
  • Markdown 用法要点
  • 网站搭建功能需求wordpress安装怎么填
  • 网络原理:TCP协议
  • timm教程翻译:(六)Data
  • VSCode + AI Agent实现直接编译调试:告别Visual Studio的原理与实践
  • 【设计模式】建造者模式(Builder)
  • DeepSeek-OCR:把长文本“挤进图片”的新思路
  • 计算机做网站开题报告网页的六个基本元素
  • AI服务器工作之整机部件(CPU+内存)
  • 【EE初阶 - 网络原理】网络层 + 数据链路层 + DNS
  • 关于二级网站建设西安网站制作一般多少钱
  • 【机器学习06】神经网络的实现、训练与向量化
  • [人工智能-大模型-25]:大模型应用层技术栈 - 大模型应用层的四大开发模式(如何利用大语言模型?)
  • YOLO目标检测:一种用于无人机的新型轻量级目标检测网络
  • 第六部分:VTK进阶(第166章 标量-向量-张量场管理)
  • A Survey of Camouflaged Object Detection and Beyond论文阅读笔记
  • 基于 hexo + github 的个人博客系统搭建