QQ登录

只需一步,快速开始

终极精品

查看: 2534|回复: 0
打印 上一主题 下一主题

[网络技术] 实现在线预览远程服务器pdf文件心路历程

[复制链接]
[至尊红钻3级]发帖数量≥1000篇 [至尊黄钻5级]威望≥3000点 [至尊蓝钻3级]在线时间≥800小时 [至尊绿钻5级]贡献度≥3000点 [至尊紫钻6级]金币≥200000个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 管理员
 UID:  1   [未点亮普号显示]钻石不足3个
 积 分: 407416
 威 望: 3806
 贡 献: 3745
 活 跃: 0
 发 贴: 1401 (4)
 终极币: 394653  
性 别: I'm 火星人!
阅读权限: 200
在线时长: 1151 小时
注册时间: 2014-7-25
最后登录: 2025-4-29
go
楼主
发表于 2020-5-12 20:23:19 |只看该作者 |倒序浏览

查看完整版请注册登录浏览

您需要 登录 才可以下载或查看,没有帐号?点击注册

x
前言

大家都知道在线预览本地pdf文件、只要将地址定位到本地pdf所在目录,即可打开pdf文件。但是如果地址直接指向服务器地址呢,近期做的项目是在线预览服务器上的pdf文件,出现了跨域问题,无法正常获取预览文件。

首先想到的解决方法:

1、让存放pdf文件的服务器支持跨域

但问题又来了,存放pdf文件的服务器有很多、以后还可能增加,每次都配置一下跨域、实在繁琐、而且也存在安全问题

2、当前项目的后台增加一个将远程文件转换成文件流的接口、直接给前端输出支持跨域的文件流、---------方案可行----------------

前端怎么展示 pdf文件呢?

  • iframe标签展示pdf:在pc浏览器上的是支持通过url直接预览pdf文件的、ios移动端浏览器也支持、但在android手机上、有的浏览器却 弹出下载框、下载到本地才能预览,这种iframe展示的方式失败了

本文说一下pdf插件的使用过程

最后上网搜资料,发现了pdfjs插件、又找了vue-pdf组件直接拿来用、功能是实现了,但是打包以后、dist包文件瞬间翻了一倍大

最后去pdfjs官网下载了库文件、在public static文件下引入、避免了webpack将其打包。

PDF.js可在官网下载 地址:mozilla.github.io/pdf.js/

解压后的目录结构是:


                               
登录/注册后可看大图

其中build目录是PDF.js的核心文件。
web目录是PDF.js的配置与显示文件。


                               
登录/注册后可看大图
viewer.html是负责显示PDF的,viewer.js是负责配置的文件。viewer.js中:


                               
登录/注册后可看大图
其中var DEFAULT_URL 是默认解析的PDF文件,可以对他进行替换。


  1. <iframe id="frame" :src="'/static/pdf/web/viewer.html?file='+test"></iframe>
复制代码
test变量指的是:

  1. encodeURIComponent('https://pch5.test.com/api/requestFile.pdf?requestUrl='+target.href)
复制代码


target.href变量指的是远程服务器的pdf文件地址


转载于:https://juejin.im/post/5cce452551882541e27b0c04


分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 支持支持0 反对反对0
宣传推广终极精品资源www.chnspy.com提升下载权限1...
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

QQ|Archiver|手机版|小黑屋|终极精品资源 ( 版权所有:广州汉鸿信息科技有限公司 粤ICP备15041466号

GMT+8, 2025-6-24 06:36 , Processed in 0.091254 second(s), 28 queries .

Powered by Discuz! X3.2

© 2015-2016 www.chnspy.com.

快速回复 返回顶部 返回列表