如何使用pdf.js展示pdf文件(親測可用)
簡單的實(shí)現(xiàn)方式
- 如果只是電腦端,可通過
iframe
標(biāo)簽嵌套預(yù)覽 - ios手機(jī)端可通過
a
標(biāo)簽包裹點(diǎn)擊跳轉(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),或者下載右邊的舊版瀏覽器版本(沒有嘗試過
)
引入項(xiàng)目
在public文件夾下新建pdfjs文件夾,將解壓后的文件放進(jìn)去
解壓后的
放到項(xiàng)目中
使用
第一種方法(文件鏈接或者靜態(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文件在同一個(gè)域名或者ip下
第二種方法
1、先創(chuàng)建個(gè)iframe標(biāo)簽,給定一個(gè)id
2、從后端獲取blob形式的pdf文件,具體怎么獲取和后端商定(思路,后端提供一個(gè)接口,參數(shù)為文件鏈接,前端帶參文件鏈接請求接口后,接口返回此文件鏈接的blob形式的文件流。)
3、獲取到blob形式的pdf文件后,添加到iframe中,完成
解決mac OS 的safari瀏覽器不兼容的問題
方法一
直接使用老版本,我測試使用老版本對項(xiàng)目暫無任何影響
方法二(使用老版本的pdfjs即可,這個(gè)方法概率性出現(xiàn)pdf按鈕不顯示的問題)
老版本和新版本同時(shí)引入,當(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判斷手機(jī)訪問或者PC的幾個(gè)例子(常用于手機(jī)跳轉(zhuǎn))
js判斷手機(jī)或者PC的例子我們在幾乎所有網(wǎng)站都會(huì)有這段代碼了,現(xiàn)在手機(jī)流量與pc差不多了,下面來看兩段js判斷手機(jī)或者PC例子吧2015-12-12javascript中href和replace的比較(詳解)
下面小編就為大家?guī)硪黄猨avascript中href和replace的比較(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11js實(shí)現(xiàn)點(diǎn)擊生成隨機(jī)div
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)點(diǎn)擊生成隨機(jī)div,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01JavaScript設(shè)計(jì)模式之代理模式介紹
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之代理模式介紹,代理模式顧名思義就是用一個(gè)類來代替另一個(gè)類來執(zhí)行方法功能,需要的朋友可以參考下2014-12-12微信小程序開發(fā)之視頻播放器 Video 彈幕 彈幕顏色自定義實(shí)例
本篇文章主要介紹了微信小程序開發(fā)之視頻播放器 Video 彈幕 彈幕顏色自定義實(shí)例,具有一定的參考價(jià)值,有興趣的同學(xué)可以了解一下。2016-12-12實(shí)現(xiàn)png圖片和png背景透明(支持多瀏覽器)的方法
Firefox和Opera對PNG的支持非常的好,都是IE卻無視PNG圖片這一特性的“存在”,雖然IE7已經(jīng)支持都是IE6還是不行。2009-09-09javascript axios 實(shí)現(xiàn)進(jìn)度監(jiān)控的示例代碼
在使用axios發(fā)送HTTP請求時(shí),可以通過onUploadProgress和onDownloadProgress來監(jiān)控上傳和下載的進(jìn)度,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01