實現(xiàn)方式
前端使用iframe,地址直接指向pdf的下載地址故觅,后端直接將文件內容寫入到HttpServletResponse的輸出流中,前端就會自動使用chrome瀏覽器在iframe中顯示pdf內容
后端注意事項
需要指定響應頭信息渠啊,如下:
resp.setHeader("Content-Disposition", "filename=" + URLEncoder.encode(attm.getOriginName(), "UTF-8"));
需要注意三點:
- 必須指定Content-Disposition输吏,如果不指定的話,chrome也會正確預覽昭抒,但是下載時自動填充的文件名為頁面的訪問地址评也,而不是正常的文件名
- Content-Disposition,值直接使用“filename=”炼杖,而不要寫成“attachment;filename=”灭返,如果帶有attachment的話,iframe訪問時會直接觸發(fā)瀏覽器的下載動作
- 文件名必須使用URLEncoder進行轉碼坤邪,否則chrome或firefox填充文件名時會是亂碼
前端注意事項
chrome打開pdf時熙含,有時默認的縮放大小會很小,需要點擊自適應按鈕艇纺,去適應屏幕大小
在網(wǎng)上查詢后怎静,找到解決方案如下:
pdf的預覽地址后邊可以跟一些控制參數(shù),如#page=2黔衡,打開自動跳到第2頁蚓聘,view=Fit視圖直接自適應等
經過測試,view=FitH,top 可以實現(xiàn)直接在iframe中全屏展示
注意:如果要加多個參數(shù)盟劫,按如下格式
http://xxxx.com/xxxx#page=1&view=FitH,top
打開pdf時夜牡,會按照參數(shù)的順序執(zhí)行,所以有的參數(shù)必須放到前邊侣签,如上例塘装,page必須在view前邊
更詳細的參數(shù)支持急迂,看附件中的文檔
參考鏈接
所有支持的參數(shù),第二個鏈接的文檔里都有蹦肴,并且可以直接在這個鏈接的地址上測試這些參數(shù)
經測試僚碎,有些參數(shù)在chrome中并不生效,如:pagemode=thumbs阴幌,應該是展示縮略圖勺阐,但是并沒有展示縮略圖,但是page 或 view參數(shù)是生效的