如何使用pdf.js展示pdf文件(親測可用)
簡單的實現(xiàn)方式
- 如果只是電腦端,可通過
iframe標簽嵌套預(yù)覽 - ios手機端可通過
a標簽包裹點擊跳轉(zhuǎn)預(yù)覽(安卓端不行)
安卓電腦ios的通用方法
資料
獲取當(dāng)前客戶端類型
judgeClient() {
let client = ''
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { // 判斷iPhone|iPad|iPod|iOS
client = 'iOS'
} else if (/(Android)/i.test(navigator.userAgent)) { // 判斷Android
client = 'Android'
} else {
client = 'PC'
}
return client
}
正式開始
下載及安裝pdf.js插件
前往官方地址下載插件包 http://mozilla.github.io/pdf.js/
此鏈接可下載最新版本,不兼容老版本瀏覽器和蘋果系統(tǒng),若需在蘋果展示則使用最上面老版本系統(tǒng),或者下載右邊的舊版瀏覽器版本(沒有嘗試過)

引入項目
在public文件夾下新建pdfjs文件夾,將解壓后的文件放進去
解壓后的

放到項目中

使用
第一種方法(文件鏈接或者靜態(tài)文件)
解決跨域問題
先解決pdfjs自帶的跨域攔截:
新版本
找到/web/viewer.js,搜索 fileOrigin,并注釋以下代碼段

老版本
找到/web/viewer.js,搜索 if (origin !== viewerOrigin && protocol !== “blob:”) {,并注釋以下代碼段

使用iframe嵌入即可
file后攜帶需要展示的pdf鏈接 <iframe src="pdfjs/web/viewer.html?file=http://xxxx/file/xxxx.pdf" width="500" height="500"></iframe>
注意:
要展示的pdf必須和psf.js文件在同一個域名或者ip下
第二種方法
1、先創(chuàng)建個iframe標簽,給定一個id

2、從后端獲取blob形式的pdf文件,具體怎么獲取和后端商定(思路,后端提供一個接口,參數(shù)為文件鏈接,前端帶參文件鏈接請求接口后,接口返回此文件鏈接的blob形式的文件流。)

3、獲取到blob形式的pdf文件后,添加到iframe中,完成

解決mac OS 的safari瀏覽器不兼容的問題
方法一
直接使用老版本,我測試使用老版本對項目暫無任何影響
方法二(使用老版本的pdfjs即可,這個方法概率性出現(xiàn)pdf按鈕不顯示的問題)
老版本和新版本同時引入,當(dāng)請求頁面是判斷當(dāng)前客戶端類型,若是ios則使用老版本的pdf.js文件

最笨的代碼示例
client是文章開頭的方法獲取的客戶端類型
<iframe
v-if="item.url && item.url.split('.').pop().toLowerCase() === 'pdf' && client !== 'iOS'"
:src="'pdfjs/new/web/viewer.html?file=' + item.url"
allow="fullscreen"
align="center"
name="ifd"
width="100%"
scrolling="no"
frameborder="0"
type="application/pdf"
height="700"/>
<iframe
v-else-if="item.url && item.url.split('.').pop().toLowerCase() === 'pdf' && client === 'iOS'"
:src="'pdfjs/old/web/viewer.html?file=' + item.url"
allow="fullscreen"
align="center"
name="ifd"
width="100%"
scrolling="no"
frameborder="0"
type="application/pdf"
height="700"/>
參考文章
https://www.cnblogs.com/huihuihero/p/16892882.html
到此這篇關(guān)于使用pdf.js展示pdf文件(親測可用)的文章就介紹到這了,更多相關(guān)pdf.js展示pdf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js判斷手機訪問或者PC的幾個例子(常用于手機跳轉(zhuǎn))
js判斷手機或者PC的例子我們在幾乎所有網(wǎng)站都會有這段代碼了,現(xiàn)在手機流量與pc差不多了,下面來看兩段js判斷手機或者PC例子吧2015-12-12
javascript中href和replace的比較(詳解)
下面小編就為大家?guī)硪黄猨avascript中href和replace的比較(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
微信小程序開發(fā)之視頻播放器 Video 彈幕 彈幕顏色自定義實例
本篇文章主要介紹了微信小程序開發(fā)之視頻播放器 Video 彈幕 彈幕顏色自定義實例,具有一定的參考價值,有興趣的同學(xué)可以了解一下。2016-12-12
實現(xiàn)png圖片和png背景透明(支持多瀏覽器)的方法
Firefox和Opera對PNG的支持非常的好,都是IE卻無視PNG圖片這一特性的“存在”,雖然IE7已經(jīng)支持都是IE6還是不行。2009-09-09
javascript axios 實現(xiàn)進度監(jiān)控的示例代碼
在使用axios發(fā)送HTTP請求時,可以通過onUploadProgress和onDownloadProgress來監(jiān)控上傳和下載的進度,具有一定的參考價值,感興趣的可以了解一下2025-01-01

