PDF作為一種被廣泛應(yīng)用的文檔格式,實(shí)現(xiàn)在線查看PDF文件需要瀏覽器有PDF插件的支持。然而,有些瀏覽器不支持PDF插件,或者用戶沒(méi)有安裝PDF插件等原因,這時(shí)候使用一種全新的開(kāi)源庫(kù)——pdf.js 來(lái)實(shí)現(xiàn)在線查看PDF文件就顯得尤為重要了。
作為針對(duì)現(xiàn)代瀏覽器的HTML5技術(shù)集合,pdf.js開(kāi)發(fā)的初衷就是要實(shí)現(xiàn)瀏覽器端的PDF轉(zhuǎn)化成HTML5的標(biāo)準(zhǔn),不需要再依賴任何的插件,解決了很多IE瀏覽器默認(rèn)不支持PDF技術(shù)的難題。
php結(jié)合pdf.js,可以幫助我們實(shí)現(xiàn)如下例子,一個(gè)本來(lái)需要使用PDF插件才可以查看的PDF文件“example.pdf”,現(xiàn)在可以通過(guò)訪問(wèn)我們的瀏覽器,在線查看,例如:
<iframe src="pdf.php?file=example.pdf" width="100%" height="600"> </iframe>
我們?cè)趐hp中編寫(xiě)的這段代碼,會(huì)將“example.pdf”文件輸入到pdf.js解析,并且通過(guò)php動(dòng)態(tài)給出相應(yīng)的HTML,從而實(shí)現(xiàn)在線打開(kāi)PDF文件。
下面是一個(gè)php文件中使用pdf.js的示例:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!--引入pdf.js and pdf.worker.js庫(kù)文件 --> <script src="pdf.js"></script> <script src="pdf.worker.js"></script> <script src="jquery.min.js"></script> <style> #pdfview { border: solid 1px #eee; min-height: 600px; } </style> </head> <body> <div id="pdfview"></div> <script type="text/javascript"> $(document).ready(function(){ var pdfurl='';//PDF文件的URL PDFJS.getDocument({url : pdfurl}).then(function(pdf) { pdf.getPage(1).then(function(page) { var viewport = page.getViewport(1); var canvas = document.createElement('canvas'); canvas.setAttribute('id', "pdf_canvas"); var ctx = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; page.render({ canvasContext: ctx, viewport: viewport }).then(function() { $('#pdfview').html(canvas); }); }); }); }); </script> </body> </html>
在這個(gè)例子中,我們使用了pdf.js處理框架的核心函數(shù)——getDocument()和getPage(),在PHP文件中通過(guò)嵌套JavaScript代碼來(lái)實(shí)現(xiàn)結(jié)構(gòu)和交互的自由操作。
通過(guò)這樣的方式,我們可以在PHP中使用pdf.js來(lái)打開(kāi)PDF文件并生成HTML代碼。pdf.js的定位是為了實(shí)現(xiàn)PDF文檔的免插件實(shí)踐,而PHP則可以在邏輯層面靈活地組合和使用各種庫(kù)文件,完成各種在線功能的實(shí)現(xiàn)。
總之,在PHP中介入pdf.js工具,是實(shí)現(xiàn)瀏覽器端PDF在線瀏覽的一種非常可行且靈巧的方法。在應(yīng)用中的好處離不開(kāi)我們的創(chuàng)意和技巧。