1. 程式人生 > >vue專案中使用pdf.js預覽pdf檔案

vue專案中使用pdf.js預覽pdf檔案

    專案要求需要預覽pdf檔案,網上找了很久,大多數都是推薦pdf.js,自己起了解了一下,最後決定用pdf.js,

但是發現,在vue中使用這個很少!!!!!所以我就寫這一篇幫助一下vue使用pdfjs的朋友!

其實 這和前端框架無關的,直接使用pdf.js原生

     搜多了你就發現有幾個封裝pdf.js的vue元件,個人試驗了其中一個,效果不是很好,所以,當然啊,用原生

的是最好的啦!

   首先肯定是匯入外掛,我是從官網直接下載,連結:點選開啟連結,注意放在static檔案目錄下,

這裡面有核心的pdf.js和pdf.worker.js,以及展示pdf的viewer頁面把它作為靜態資源來編譯,基本想要的build和web這兩個重要資料夾的東西都正常編譯。當然你可以可以npm install一下,整個檔案放在static目錄下的不好地方就是打包會很大喲,我不是圖方便嘛。目錄結構放一下

其實就可以直接用的,網上很多,viewer.js 裡的

 

代表著檔案路徑,如果你專案中有個pdf檔案,那直接相對路徑就可以在頁面預覽,我今天說的是遠端預覽(伺服器端url預覽),pdf.js也提供了一種方法,

用file= 的方式也可以開啟喲,放在頁面上使用,我是iframe進行巢狀

    用這種方式必不可少的是跨域問題,你儲存檔案的伺服器路徑會和專案產生跨域,我的解決辦法是,讓後臺返回流的形式返回檔案,後臺程式碼案例:

 

注意:

1    pdf.js是不支援跨域檔案載入的  直接載入是不會成功的。會報  “file origin doesnot match viewer”錯誤。 所以我們得改變一下原始碼

把這句警告直接註釋就行了

2    file引數中預設只允許傳簡單路徑比如:http://www.a.com/file.php.  如果你要瀏覽的pdf路徑為http://www.a.com/file.php?id=2001。 這時候直接傳入的話會解析出錯, 因為pdf.js無法判斷id=2001是viewer.html的引數呢還是file.php的引數

 這告訴我們 url必須進行encode編碼  把引數file後傳入的動態引數中特殊字元轉義:

這裡又會有兩種方法:

encodeURI() 把字串編碼為 URI
encodeURIComponent() 把字串編碼為 URI 元件

發現        encodeURI不會對:/?&等uri中起分割作用的字元進行編碼;

encodeURIComponent則會。

所以必須選擇 encodeURIComponent 進行對url的編碼

舉例

這樣如此就ok

3  

如果 後臺返回給前臺的流的url形式 是

https://uat.hjl.hscf.com/api/esm/v1/contractTemplates/load?id=13&access_token=a33e14ef6aba87b593b1aac31e3d97bb

這樣pdf.js外掛是無法識別的,所以的在最後加上 &.pdf  來騙過外掛

效果圖

上面是pc端的,移動端也同樣試用,這裡以微信為例,ios可以用自帶的微信瀏覽器來進行pdf的預覽,而安卓則必須用pdf.js來預覽pdf咯,分辨ios與安卓的方法,我的部落格裡有喲!謝謝觀看,一起交流進步!

當然這是用iframe開啟的,我這裡也提供一種不是iframe開啟的樣式,因為pdf.js本質上是用canvas渲染的,我也是借鑑了他人的程式碼,具體我也忘了,放一下demo效果,(注意檢視伺服器返回流,token會失效,你測試的時候會報錯,我只是告訴你怎麼寫而已,謝謝)

如果對你有所幫助的話,歡迎star! 謝謝

相關推薦

vue專案使用pdf.jspdf檔案

    專案要求需要預覽pdf檔案,網上找了很久,大多數都是推薦pdf.js,自己起了解了一下,最後決定用pdf.js, 但是發現,在vue中使用這個很少!!!!!所以我就寫這一篇幫助一下vue使用pdfjs的朋友! 其實 這和前端框架無關的,直接使用pdf.js原生

pdf.jspdf檔案

專案中需要做一個office線上預覽的功能,所以用到了pdf.js 下載對應官方檔案, 然後 <a href="plug-in/pdfjs/web/viewer.html?file=./../../../${dmdocPage.mainFile.swfpath}

vue專案上傳Github

最近在用Vue仿寫cnode社群,想要上傳到github,並通過Github pages預覽,在這個過程中遇到了一些問題,因此寫個筆記,以便查閱。 完成Vue專案以後,在上傳到github之前,需要修改一些配置才能通過github pages預覽專案。 一、修改配置 解決檔案路徑問題: 開啟專案

vue專案手機真機和除錯

很多專案要模擬手機真機環境才能測的出效果比如像高斯模糊的一些樣式特效只有在真機上才看得出來;但是如果要上線上每次都要打包所以很不方便,給大家介紹一下我的方法: 1.** 首先找到 config 下面的index.js ** 如圖: 2. 找到host:‘localhos

fis3+vue+pdf.js制作PDF文件或其他

制作 idt 心得 路徑 cal 構建 ack 功能 demo   人生第一篇博客,的確有點緊張,但有些許興奮,因為這對於我來說應該是一個好的開始,以此勵誌在技術的道路上越走越遠。   看過了多多少少的技術博客,給自己帶來了很多技術上的收獲,也因此在想什麽時候自己也可以贈人

PDF.js —— vue專案使用pdf.js顯示pdf檔案(流)

前言:專案中有一個需要預覽下載pdf的需求,網上找了很久,決定使用 pdf.js 完成。 第一步: 首先肯定是匯入外掛,我是從官網直接下載,連結:點選開啟連結,注意需要放在static檔案目錄下 注意:這裡面有核心的pdf.js和pdf.worker.js,以及展示pdf的vi

vue外掛開發 使用pdf.js實現手機端線上pdf文件

        目前大多數PC瀏覽器支援線上預覽pdf檔案,但大多數手機瀏覽器還未支援,嘗試用手機瀏覽器開啟一個pdf檔案會彈出是否下載的提示框。網上查了一些資料,在實現的過程中,還是走了比較多的彎路,最後採用了倍受推薦的pdf.js外掛來實現(文末附Demo)。     

JS展示PDF

wid object The view 電子 轉碼 ref 使用 order 剛好遇到需求,需要在手機端--展示一個電子收據,電子收據返回是PDF格式的,所以需要在前端上面去做PDF預覽。 在學習過程中,了解到一種很簡單,不需要任何插件的方法做PDF預覽,但是這方法有局限性

Jquery.media.js實現網頁線上pdf檔案

近期在工作中遇到了需要在網站預覽pdf檔案的需求,網上的資料很多,我使用了其中一種,即使用 Jquery.media.js包實現。 首先需要準備兩個內容: 1,jquery.js,任意版本 2,jquery.media.js,可以從網上搜,或者去下面我提供的地方下載(是我上傳的),

ionic3專案實現線上PDF檔案

這裡參考了大牛提供的預覽外掛完成自己需要實現的功能,ng2-pdf-viewer,該外掛不支援ionic3的懶載入,廢話少說,直接擼程式碼。 第一步,安裝 ng2-pdf-viewer npm install ng2-pdf-viewer --save 第二步,在專案中新建頁面

java+js將資料列印PDF

1、pdfjs包的位置 2.後臺java @RequestMapping(params = "goViewPDF") public ModelAndView goViewPDF(HttpServletRequest request,HttpServletRespon

vue專案編寫一個圖片的公用元件

今天產品提出了一個檢視影像的功能需求。 在檢視單據的列表中,有一列是影像欄位,一開始根據單據號呼叫介面檢視是否有圖片附件,如果有則彈出一個全屏的彈出層,如果沒有給出提示。而且,從列表進入詳情之後,附件那邊也會有一個檢視影像的按鈕。 所以,根據需求,多個元件需要用到檢視影像的功能,所以考慮做一個公用元件,通過元

js 實現 pdf 線上 列印 【完整版】

今天想寫的內容   因為網上有用的太少了,自己半摸索的實現了【文末有原始碼程式碼下載連結】。 1.說下需求:點選標題  跳轉  預覽的pdf  頁,下載功能 可選【最好有】。  2.實現結果 :   &nbs

瀏覽器線上pdf檔案(不使用外掛)

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <script src="jquer

前端js並且匯出pdf檔案

最主要的是使用到了一個jquery的外掛jquery.media.js,使用這個外掛就很容易實現了。 <!DOCTYPE html> <html> <head> <title>Show PDF</title>

前端PDF:PDFObject、PDF.js

這兩天有個需求,要在網頁上顯示PDF檔案。首先< object >、< embed >、< iframe >這幾個標籤就能實現PDF檔案的預覽(無需JavaScript支援),我還在網上看了下發現挺多第三方js庫可以實現PDF

java+js PDF線上與列印(支援中文)Demo

1.主要講一下思路,首先獲取字型檔案,將字型檔案載入,然後將PDF檔案按一定格式生成。在前臺顯示, 2.載入字型檔案時需要注意字型檔案的路徑 3.前臺顯示時pdf檔案的路徑為專案路徑 加檔案路徑,這是我被卡的三點,應用了PDFObject.js外掛。我上傳到了百度雲 連

移動端利用pdf.js實現線上pdf文件

專案中要求在移動端實現線上預覽pdf檔案,通過一番折騰,最後選擇用pdf.js實現。1、下載pdf.js    官網地址:https://mozilla.github.io/pdf.js/2、各種配置    下載下來的檔案包,就是一個demo,我們仿照這個demo做就可以啦 

jquery.media.js 外掛實現線上PDF檔案

 程式碼: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content

使用pdf.js線上pdf

預覽pdf使用pdf.js,相容ie和chrome,並且使用ie是可以免安裝外掛 1.下載pdf.js   https://github.com/mozilla/pdf.js/releases/download/v1.8.188/pdfjs-1.8.188-dist.zip