如何在 Vue 中使用 Chart.js - 手把手教你搭視覺化資料圖表

語言: CN / TW / HK

本文首發:《 如何在 Vue 中使用 Chart.js - 手把手教你搭視覺化資料圖表

很多 Vue 專案中都需要 PDF 檔案預覽功能,比如合同 ERP,銷售 CRM,內部文件 CMS 管理系統,內建 PDF 檔案線上預覽功能。本文手把手教你搭建一套 PDF 預覽元件嵌入到 Vue 專案中,實現 PDF 檔案線上預覽等 PDF 預覽的所有常見功能。

跟隨本教程學習完成後,你會搭出以下 PDF 線上預覽效果的 Vue PDF 預覽元件

如果你正在搭建後臺管理工具,又不想處理前端問題,推薦使用卡拉雲,卡拉雲是新一代低程式碼開發工具,可一鍵接入常見資料庫及 API ,無需懂前端,僅需拖拽即可快速搭建屬於你自己的後臺管理工具,一週工作量縮減至一天,詳見本文文末。

擴充套件閱讀《 12 款最棒 Vue 開源 UI 庫測評 - 特別針對國內使用場景推薦

第 2 步 - 下載並配置 PDF.js

npm install -g @vue/clivue create kalacloud-vue-pdfjs-viewercd kalacloud-vue-pdfjs-viewer

複製程式碼

接下來,我們所有操作都在 kalacloud-vue-pdfjs-viewer 這個目錄中完成。

第 2 步 - 下載並配置 PDF.js

配置好 Vue 專案後,我們先去PDF.js 官網下載最新的穩定版,PDF.js 是目前 PDF 線上預覽中最好的開源解決方案之一。我們把下載好的壓縮包解壓到 Vue 專案中的新建資料夾  public/lib 中。

然後在找一個 pdf 檔案放在資料夾的 web 資料夾中,一會我們用寫的 pdf 預覽元件來呼叫並預覽這個 PDF 檔案。

PDF.js 解壓後放在 public/lib 的目錄結構

public├── lib|    ├── build|        ├── ...|    ├── web|        ├── my-pdf-file.pdf|        ├── ...|    ├── LICENSE├── favicon.ico└── index.html

複製程式碼

擴充套件閱讀《 vue.draggable 入門指南 - 手把手教你開發任務看板

第 3 步 - 建立 Vue PDF 預覽元件

接著,我們來建立 Vue PDF 預覽元件 - PDFJSViewer.vue 。我們把它放在 Vue 元件資料夾中。

src/components 資料夾中,新建  PDFJSViewer.vue 檔案,並把以下程式碼複製進去。

檔案位置: src/components/PDFJSViewer.vue

<template><div>  <iframe height="100%" width=100% :src="`${getFilePath}`" ></iframe></div></template>
<script>export default { name: 'PDFJSViewer', props: { fileName: String, path:String }, computed:{ getFilePath: function () { if(this.fileName!==''){ return this.path +'?file=' + this.fileName } return this.path } }}</script><style scoped>div { width: 50%; height: 79vh; min-width: 400px;}</style>

複製程式碼

在元件 <template> 之中,繫結資料並將 DOM 渲染到 Vue 專案中。在  <script> 之中,我們聲明瞭 PDFJSViewer 為 Vue 專案元件,然後寫上需要載入的 PDF 檔案位置。

擴充套件閱讀《 最好用的 12 款 Vue Timepicker 時間日期選擇器測評推薦

第 4 步 - 匯入 Vue PDF 預覽元件

這一步,我們匯入 PDF 預覽元件,並在 Vue 專案中呼叫並顯示出來。

src/App.vue 中,我們先把剛剛寫的 PDFJSViewer 元件新增到  <template> 部分,以及把我們要載入預覽的 PDF 位置和檔名寫進去。

<template>  <div id="app">    <h1>Vue 實現 PDF 檔案線上預覽 - 卡拉雲(kalacloud.com)</h1>    <PDFJSViewer :path="`${path}`" :fileName="`${name}`"/>  </div></template>

複製程式碼

然後在 <script> 部分匯入 PDF 預覽元件。:

<script>import PDFJSViewer from './components/PDFJSViewer'
export default { name: 'app', components: { PDFJSViewer }, data () { return { name: 'kalacloud-demo.pdf', // 這裡是需要預覽的 PDF 檔名 path: 'lib/web/viewer.html' } }}</script>

複製程式碼

現在執行 Vue 專案,應該已經能看到 PDF 預覽效果了。

擴充套件閱讀《 最棒的 7 個 Laravel admin 後臺管理系統推薦

第 5 步 - 自定義 PDF.js 工具欄

這一步是自定義 PDF.jd 預覽元件中頂部的工具條,你可以移動工具條中按鈕的位置,給他們換 icon,也可以隱藏某些你不想讓使用者使用的功能。

public/lib/web/viewer.html 檔案的  <head> 部分,新增以下程式碼:

檔案位置: public/lib/web/viewer.html

<script src="customToolbar.js"></script>

複製程式碼

接下來,我們在 public/lib/web 中新建一個 js 檔案  customToolbar.js ,並新增以下程式碼:

檔案位置: public/lib/web/customToolbar.js

//建立一個新樣式let sheet = (function() {    let style = document.createElement("style");    style.appendChild(document.createTextNode(""));    document.head.appendChild(style);    return style.sheet;   })();    //調整頁面大小時,PDF 預覽元件會隱藏,開啟就會徹底隱藏所有功能變成一個純預覽工具。   //function editToolBar(){    //removeGrowRules();
//將功能按鈕放在工具欄左側 addElemFromSecondaryToPrimary('pageRotateCcw', 'toolbarViewerLeft') addElemFromSecondaryToPrimary('pageRotateCw', 'toolbarViewerLeft') addElemFromSecondaryToPrimary('zoomIn', 'toolbarViewerLeft') addElemFromSecondaryToPrimary('zoomOut', 'toolbarViewerLeft')
//將功能按鈕放在工具欄中間 addElemFromSecondaryToPrimary('previous', 'toolbarViewerMiddle') addElemFromSecondaryToPrimary('pageNumber', 'toolbarViewerMiddle') addElemFromSecondaryToPrimary('numPages', 'toolbarViewerMiddle') addElemFromSecondaryToPrimary('next', 'toolbarViewerMiddle')
//將功能按鈕放在工具欄右側 addElemFromSecondaryToPrimary('secondaryOpenFile', 'toolbarViewerRight')
// 更改功能按鈕的圖示 changeIcon('previous', 'icons/baseline-navigate_before-24px.svg') changeIcon('next', 'icons/baseline-navigate_next-24px.svg') changeIcon('pageRotateCcw', 'icons/baseline-rotate_left-24px.svg') changeIcon('pageRotateCw', 'icons/baseline-rotate_right-24px.svg') changeIcon('viewFind', 'icons/baseline-search-24px.svg'); changeIcon('zoomOut', 'icons/baseline-zoom_out-24px.svg') changeIcon('zoomIn', 'icons/baseline-zoom_in-24px.svg') changeIcon('sidebarToggle', 'icons/baseline-toc-24px.svg') changeIcon('secondaryOpenFile', './icons/baseline-open_in_browser-24px.svg')
// 隱藏某些功能 removeElement('secondaryToolbarToggle') removeElement('scaleSelectContainer') removeElement('presentationMode') removeElement('openFile') removeElement('print') removeElement('download') removeElement('viewBookmark') } function changeIcon(elemID, iconUrl){ let element = document.getElementById(elemID); let classNames = element.className; classNames = elemID.includes('Toggle')? 'toolbarButton#'+elemID : classNames.split(' ').join('.'); classNames = elemID.includes('view')? '#'+elemID+'.toolbarButton' : '.'+classNames classNames+= "::before"; addCSSRule(sheet, classNames, `content: url(${iconUrl}) !important`, 0) } function addElemFromSecondaryToPrimary(elemID, parentID){ let element = document.getElementById(elemID); let parent = document.getElementById(parentID); element.style.minWidth = "0px"; element.innerHTML ='' parent.append(element); } function removeElement(elemID){ let element = document.getElementById(elemID); element.parentNode.removeChild(element); } function removeGrowRules(){ addCSSRule(sheet, '.hiddenSmallView *', 'display:block !important'); addCSSRule(sheet, '.hiddenMediumView', 'display:block !important'); addCSSRule(sheet, '.hiddenLargeView', 'display:block !important'); addCSSRule(sheet, '.visibleSmallView', 'display:block !important'); addCSSRule(sheet, '.visibleMediumView', 'display:block !important'); addCSSRule(sheet, '.visibleLargeView', 'display:block !important'); } function addCSSRule(sheet, selector, rules, index) { if("insertRule" in sheet) { sheet.insertRule(selector + "{" + rules + "}", index); } else if("addRule" in sheet) { sheet.addRule(selector, rules, index); } } window.onload = editToolBar

複製程式碼

到這裡,我們已經完全配置好了 PDF 預覽元件,執行 Vue 專案,你會看到以下效果:

總結

本文介紹瞭如何在 Vue 中實現 PDF 預覽功能。如果不想處理前端問題,推薦使用卡拉雲,卡拉雲內建各類元件,無需懂任何前端,僅需拖拽即可快速生成。

下圖為使用卡拉雲搭建的內部廣告投放監測系統,僅需拖拽,1 小時搞定。

卡拉雲是新一代低程式碼開發工具,免安裝部署,可一鍵接入包括 MySQL 在內的常見資料庫及 API。可根據自己的工作流,定製開發。無需繁瑣的前端開發,只需要簡單拖拽,即可快速搭建企業內部工具。 原來三天的開發工作量,使用卡拉雲後可縮減至 1 小時,歡迎免費 試用卡拉雲

擴充套件閱讀: