JAVA-WEB在線打印預(yù)覽(PDF方式)

pdf.js框架的魅力所在,為其為HTML5實(shí)現(xiàn)的,無(wú)需任何本地支持,而且對(duì)瀏覽器的兼容性也是比較好,要求只有一個(gè):瀏覽器支持HTML5就好了?。ú贿^對(duì)于低版本的IE,就只能節(jié)哀了?。?br>

據(jù)說IE9以上是OK的,因?yàn)槲冶镜厥荌E11,所以我只在IE11上測(cè)試過,是通過的(當(dāng)然火狐,360,我也測(cè)了一下,是可以的)。

因?yàn)轫?xiàng)目開發(fā)需要,在線展示PDF,而且要兼容IE,所以就選擇了pdf.js,但是網(wǎng)上對(duì)他的教程很少,我花了一天時(shí)間才搞定,回頭看了一下,也沒有想象中那么困難,所以決定寫一篇博客,以便大家參考!

以下是pdf.js相關(guān)的網(wǎng)址:

GitHub: https://github.com/mozilla/pdf.js/

上面這個(gè)網(wǎng)址,有pdf.js的基本簡(jiǎn)介,以及如何獲取源碼,之后如何進(jìn)行構(gòu)建!

?git?clone?git://github.com/mozilla/pdf.js.git

構(gòu)建使用:

?node?make?generic

下面我就介紹下,具體嵌入項(xiàng)目中是如何運(yùn)用的!

可以把generic中的內(nèi)容作為第三方插件進(jìn)行使用,在項(xiàng)目中可以像如下存放:

我是放在plugins下的,把generic下的build和web、LICENSE都復(fù)制過來(lái)

項(xiàng)目結(jié)構(gòu):

http://localhost:8080/TestWeb/resources/plugins/pdfJs/web/viewer.htmll?file=【?】.pdf

【?】問號(hào)是輸入pdf的所在的位置

頁(yè)面代碼如下:

<%@?pagelanguage="java"contentType="text/html;?charset=utf-8"

pageEncoding="utf-8"%>

<%@?taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>

在線顯示PDF

src="?file=">

顯示效果:

這就可以在線閱讀pdf了,是不是很簡(jiǎn)單!

Ps:

我們?cè)趯?shí)際應(yīng)用中,可能會(huì)根據(jù)不同的參數(shù),來(lái)選擇展示不同的pdf文件,此時(shí)就涉及到傳參的問題了,仔細(xì)觀察上面這段url地址會(huì)發(fā)現(xiàn),在file請(qǐng)求參數(shù)中的值為一個(gè)url地址,而這個(gè)url地址又追加了自己的請(qǐng)求參數(shù),這就導(dǎo)致一個(gè)url地址中出現(xiàn)2個(gè)"?"

導(dǎo)致瀏覽器不能正常解析這段url!

一種解決思路是:我們可以把file形參的值,先編碼,然后再解碼來(lái)解決這個(gè)問題!

此時(shí),就可以請(qǐng)encodeURIComponent()函數(shù)出場(chǎng)了!因?yàn)槠錇閖s函數(shù),所以需要在文檔就緒函數(shù)中動(dòng)態(tài)為iframe設(shè)置src的值,如下所示:

<%@?pagecontentType="text/html;charset=utf-8"language="java"%>

<%@?taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>

$(function(){$("#displayPdfIframe").attr("src",'plugins/pdfJs/web/viewer.html"/>?file='?+?encodeURIComponent(''));

});

當(dāng)然,既然有編碼,那么就一定要有解碼來(lái)解析他,不過這個(gè)工作generic/web/viewer.js已經(jīng)替我們做過了,如下所示:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評(píng)論 19 139
  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 4,194評(píng)論 2 8
  • 最近項(xiàng)目需要實(shí)現(xiàn)在線預(yù)覽pdf文件功能,找來(lái)找去,發(fā)現(xiàn)有個(gè)pdf.js的類庫(kù)挺好用,直接用js實(shí)現(xiàn)在線預(yù)覽。pdf...
    半笙彷徨閱讀 21,487評(píng)論 7 28
  • 我愛我的家鄉(xiāng) 微風(fēng)浮動(dòng)的麥浪 野蜂飛舞的芳香 沾衣欲濕的杏花雨 蝶舞紛飛的菜花黃 我愛我的家鄉(xiāng) 油油的麥苗 蔥蔥的...
    漢儒應(yīng)天閱讀 396評(píng)論 1 2
  • 你的未老先衰是身體上的還是心理上的? 原創(chuàng)文 | 林子 (清風(fēng)浪港手寫鋪原創(chuàng)文,未經(jīng)授權(quán)請(qǐng)勿轉(zhuǎn)載) 一盒止痛藥又被...
    清風(fēng)浪港手寫鋪閱讀 258評(píng)論 0 1

友情鏈接更多精彩內(nèi)容