vue整合pdfjs,實現pdf檔案預覽
更多內容關注公眾號:SAP Technical
背景
專案上要求實現pdf檔案格式的預覽。
分析
pdf格式的檔案瀏覽器是可以直接開啟的。所以只需要返回pdf檔案的檔案流,就可以直接預覽檔案,通過這種方式開啟,整個頁面全是pdf的檔案內容。需求是要求預覽時,頁面上要加上特定的標題格式,所以直接把檔案流在瀏覽器開啟的方式行不通。通過收集相關資料,找到pdfjs外掛以支援檔案的預覽。
實現
1.vue中引入pdfjs依賴
npm install pdfjs-dist --save
2.使用canvas當預覽pdf檔案的畫布
<canvas v-for="page in pages" :id="'the-canvas'+page" :key="page"></canvas>
3.呼叫pdfjs api進行文件渲染
_renderPage (num) { this.pdfDoc.getPage(num).then((page) => { let canvas = document.getElementById('the-canvas' + num) let ctx = canvas.getContext('2d') let dpr = window.devicePixelRatio || 1 let bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1 let ratio = dpr / bsr let viewport = page.getViewport(screen.availWidth / page.getViewport(1).width) canvas.width = viewport.width * ratio canvas.height = viewport.height * ratio canvas.style.width = viewport.width + 'px' canvas.style.height = viewport.height + 'px' ctx.setTransform(ratio, 0, 0, ratio, 0, 0) let renderContext = { canvasContext: ctx, viewport: viewport } page.render(renderContext) if (this.pages > num) { this._renderPage(num + 1) } }) }, _loadFile (url) { PDFJS.getDocument(url).then((pdf) => { this.pdfDoc = pdf console.log(pdf) this.pages = this.pdfDoc.numPages this.$nextTick(() => { this._renderPage(1) }) }) }
4.使用時傳遞url
this._loadFile('/data/ystest/test')
5.反向代理,解決跨域
proxyTable: { '/data': { target: 'http://127.0.0.1:8081', pathRewrite: {'^/data': ''} }, }
效果演示
原始檔案.png
pc端效果1.png
pc端效果2.png
手機ipone.png
手機ipone2.png
相關文章
- vue中如何實現pdf檔案預覽?Vue
- 利用 ICEpdf 快速實現 pdf 檔案預覽功能
- 前端實現線上預覽pdf、word、xls、ppt等檔案前端
- kkFileView預覽檔案 指定預覽方式為pdfView
- Vue3實現excel檔案預覽和列印VueExcel
- html中線上預覽pdf檔案之pdf線上預覽外掛HTML
- 結合 Laravel 實現檔案(PDF、world、Excel 之類)線上預覽?LaravelExcel
- 直播平臺搭建,使用vue-pdf 實現pdf線上預覽並且自定義預覽框高度Vue
- uniapp 線上預覽pdf 或者 檔案APP
- 專案中如何整合 kkFileView,實現幾乎任意格式檔案的預覽View
- 如何使用預覽程式編輯PDF檔案?
- 前端實現文件預覽(支援word、ppt、pdf)-【@zuiyouliao/vue-file-viewer】前端UIVueView
- 使用PDF.JS外掛在HTML中預覽PDF檔案JSHTML
- vue實現圖片預覽Vue
- Java後臺返回PDF檔案預覽下載Java
- Vue專案中使用基於pdf.js的vue-pdf外掛在pc瀏覽器下閱覽PDF檔案VueJS瀏覽器
- 在electron下實現PDF線上預覽功能
- .NET實現網頁版Office檔案預覽網頁
- Web專案中預覽PDFWeb
- 如何在 Mac 上使用預覽將 .pdf 檔案更改為 .jpg 檔案Mac
- Mac如何使用預覽應用合併PDF檔案 Mac合併PDF檔案教程詳解Mac
- office轉pdf和圖片實現線上預覽
- vue對CSV檔案進行表格預覽Vue
- PDF、PPT、Excel、Word、視訊等格式檔案線上預覽Excel
- Web方式預覽Office/Word/Excel/pdf檔案解決方案WebExcel
- 如何實現檔案轉換與線上預覽功能
- 【Vue 實踐】頁面生成 pdf 檔案-01Vue
- react實現移動端PDF線上預覽外掛React
- 記錄--前端實現檔案預覽(word、excel、pdf、ppt、xmind、 音影片、圖片、文字) 國際化前端Excel
- 使用dompdf/dompdf實現生成pdf檔案
- Python | 實現pdf檔案分頁Python
- Java整合FreeMarker匯出Pdf檔案Java
- vue通過url下載檔案,直接預覽問題Vue
- kkFileView檔案線上預覽View
- Jquery Media外掛使用,解決線上預覽及開啟PDF檔案jQuery
- react-pdf預覽線上PDF的使用React
- vue專案上傳Github預覽VueGithub
- WordPress線上檢視PDF外掛:PDFjs ViewerJSView