pdf.js 库的使用

news/2024/7/19 14:37:23 标签: pdf, web, js, front, http
http://www.w3.org/2000/svg" style="display: none;"> webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

这里写自定义目录标题

  • 1. pdf.js 库的使用
    • 1.1. 什么是 pdf.js
    • 1.2. 在网页上显示 pdf 文件(使用 pdf.js)
      • 1.2.1. 下载
      • 1.2.2. 网页上显示 pdf 文件
        • 1.2.2.1. 传入参数(不推荐)
        • 1.2.2.2. 修改默认文件
    • 1.3. 遇到的问题
      • 1.3.1. 问题: `file origin does not match viewer`
      • 1.3.2. 问题: 获取 pdf 时服务器返回 0

pdfjs__3">1. pdf.js 库的使用

pdfjs_5">1.1. 什么是 pdf.js

pdf.js 是一款 Nozilla 开发的、用于网页上显示 pdf 文档的 Javascript 库, 提供 pdf 文件的在线阅读。

pdf.js 在支持 js 的服务器上就能运行, 所以各种网站上的 Pages 服务均支持, 无须 php、java 等动态语言环境的支持。

pdf__pdfjs_11">1.2. 在网页上显示 pdf 文件(使用 pdf.js)

1.2.1. 下载

网址: http://mozilla.github.io/pdf.js/getting_started/。

下载 Pre-built 就可以了, 无需下载其源码, Pre-built 里选择 Stable 版本, 不要下 Beta 版, 编程这么多年了, 要相信 Bug 的力量- -!。

解压后, 里面的 .map 文件是用于浏览器调试 js 时用到的调试文件, 是在生成时用 node.js 编译生成的, 此类文件较大, 我们一般用不到, 所以可以删除。

pdf__21">1.2.2. 网页上显示 pdf 文件

有两种显示 pdf 文件的方式, 一种是传入 pdf 文件的路径参数, 可以为 URL, 但是采用这种方式会在网址栏看到 pdf 的 URL 地址。另外一种方法是直接修改默认文件。

1.2.2.1. 传入参数(不推荐)

在地址栏后面传 ?file=test.pdf 即可完成对默认路径的修改:

http://localhost:8080/pdfjs/web/viewer.html?file=test.pdf //这种最好不要传输中文, 具体我没用试过

这里的 test.pdf 取与 viewer.html 的相对路径即可(整个服务器的绝对路径也行, 跨域的 URL 也可)。

1.2.2.2. 修改默认文件

index.html

<!DOCTYPE html>
<html>
<head>
<!-- 以下方式定时转到其他页面 -->
<meta http-equiv="refresh" content="0;url=web/viewer.html">
</head>
</html>

修改文件 web/viewer.js 里面的 DEFAULT_URL 的值, 可以是相对路径, 也可以是跨域的 URL(当然这个由于安全原因默认没打开, 想要打开看下面的问题):

var DEFAULT_URL = 'https://xxx.pdf'

1.3. 遇到的问题

1.3.1. 问题: file origin does not match viewer

原因: 由于安全性, 默认是阻止了 pdf 文件跨域的

解决方案: 修改 viewer.js, 将里面的代码注释就可以了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ra9wlXpm-1670572727477)(http://p7ldffsa9.bkt.clouddn.com/Web-javascript-pdfjs-validatefileurl.png)]

pdf__0_63">1.3.2. 问题: 获取 pdf 时服务器返回 0

原因: 这种情况往往出现在 pdf 使用了跨域的 URL, 对方服务器禁用了跨域访问。

解决方案: 放置 pdf 文件的服务器把引用的 URL 加入白名单即可。


http://www.niftyadmin.cn/n/1620481.html

相关文章

linux img文件压缩及解压

2.6内核中的initrd.img采用cpio压缩&#xff0c;不再是2.4内核使用的ext2格式&#xff0c;无法使用mount -o loop 挂载。需要使用gunzip解压缩&#xff0c;然后再使用cpio解包cp /boot/initrd-***.img initrd.img.gzgunzip initrd.img.gzmkdir initrdmv initrd.img initrdcd in…

简单介绍session,cookie,token以及区别

Cookie简介 ①.是由服务器发给客户端的特殊信息&#xff0c;以文本的形式存放在客户端 ②.客户端再次请求的时候,会把Cookie回发给服务器 ③.服务器接收到后,会解析Cookie生成与客户端相对应的内容 Cookie的设置与发送过程分以下四步:(cookie的实现方式) 客户端发送一个http请…

网络游戏技术

这里写自定义目录标题1. 网络游戏技术1.1. 网络游戏专业术语中英文对照版1.2. 网关服务器1.3. 贴图、纹理、材质的区别是什么1.4. shader 简介1.5. 什么是 Unity Ads1. 网络游戏技术 1.1. 网络游戏专业术语中英文对照版 http://www.wikiwand.com/zh-cn/%E9%9B%BB%E5%AD%90%E9…

当远程桌面到Windows终端服务器,出现终端服务器超出了最大允许连接数,怎么办...

如果是老版本的MSTSC则使用 MSTSC /console /v:ip如果是新版本 MSTSC /admin /v:ip

S3C2410 实验三——块拷贝、字拷贝(寄存器的理解)

因为笔记做在 evernote 上&#xff0c;博客上就不再重新敲了。 http://www.evernote.com/shard/s307/sh/5bd591a1-dbbd-4457-812a-17c08c2234e1/7ffcd2b6a24f6ef4f930e85885de9ad1

centos7有关于防火墙的命令

查看防火墙状态 firewall-cmd --state 开启防火墙 systemctl start firewalld.service 关闭防火墙 systemctl stop firewalld.service

分布式技术

这里写自定义目录标题1. 分布式技术1. 分布式与集群的区别2. 分布式2.1. 什么是分布式2.2. 为什么会有分布式CAP 定理的含义1. 分布式系统的三个指标2. Partition tolerance3. Consistency4. Availability5. Consistency 和 Availability 的矛盾6. 答疑7. 取舍策略8. 总结分布式…

iOS web remote debug 正确的姿势

在使用iOS Remote debug需要做以下准备 1. iOS devices 开启java script and web inspector 开启方式如下&#xff1a; 2. mac OS 自带的Safari开启develop 模式 开启方法如下&#xff1a; 如何使用iOS remote debug&#xff1f;