隨著技術的不斷進步,現在我們已經可以很方便地將圖片轉成pdf。很多人使用的是一些圖片轉pdf的在線工具,但是這種在線轉換的方式不僅速度慢,有時還會讓人不放心。現在,使用Vue,我們可以很輕松地將多張圖片轉成一個pdf文件。
首先,我們需要安裝一個插件,名字叫“jspdf”,這個插件可以讓我們很快地生成一個pdf文件。可以通過下面的命令來安裝:
npm install jspdf --save
安裝完插件后,我們需要編寫代碼。以vue的單文件模式為例,我們在src
目錄下新建一個組件,叫做“ImageToPDF.vue”,代碼如下:
<template> <div> <input type="file" @change="handleFileChange" multiple> <button @click="downloadPDF">Download PDF</button> </div> </template> <script> import jsPDF from 'jspdf'; export default { data () { return { imgList: [] } }, methods: { handleFileChange () { const inputFile = event.target; const files = inputFile.files; for (let i = 0; i < files.length; i++) { const reader = new FileReader(); reader.onload = (e) => { this.imgList.push(e.target.result); }; reader.readAsDataURL(files[i]); } }, downloadPDF () { const pdf = new jsPDF(); this.imgList.forEach((img, i) => { pdf.addImage(img, 'JPEG', 10, 10, 190, 277, null, 'SLOW'); if (i !== this.imgList.length - 1) { pdf.addPage(); } }); pdf.save('myPDF.pdf'); } } }; </script>
在這里,我們首先引入了jspdf
插件,然后在組件的data中聲明了一個imgList
數組。在handleFileChange
方法中,我們監聽了input file的change事件,獲取用戶選擇的圖片。之后遍歷這些圖片,把它們轉成base64編碼,并存到imgList
數組中。
在downloadPDF
方法中,我們新建了一個jsPDF
實例,并遍歷imgList
數組,使用pdf.addImage
方法向pdf文件中添加圖片。如果當前圖片不是數組中的最后一個,我們還需要添加一個新的頁面。
最后,我們使用pdf.save
方法來下載生成的pdf文件。保存的文件名可以自定義。
到這里,一個基于vue的圖片轉pdf的組件就完成了。使用這個組件,我們可以非常方便地把多個圖片合成一個pdf文件,而且轉換的速度也非常快。不過,需要注意的一點是由于圖片數量的不同,pdf的大小可能也會不同。
上一篇vue 圖片壓縮顯示