**
利用jsPDF把图片转成pdf格式保存本地
**
参考地址:jsPDF:https://rawgit.com/MrRio/jsPDF/master/docs/jsPDF.html
利用jsPDF吧图片转成pdf:
Npm install jsPDF
引入jsPDF
import {jsPDF} from ‘jspdf’
const recordPdf = new jsPDF('p','cm','a4')
result.forEach( (item,index)=>{
if(index !== 0){
recordPdf.addPage('a4')
}
recordPdf.addImage(item.url,'jpeg',1,1.2,19,26.6)
})
下载方式:
第一种:
利用pdf本身的save方法进行下载
recordPdf.save(‘a4.pdf’)
此方法会弹出选择路劲框,让你选择下载路径进行下载
第二种:
利用pdf原文件里面的saveAS方法进行下载
此saveAS方法不仅不可进行pdf下载,还可以进行其他各种文件下载,具体参考file-saver官方文档。
import FileSaver from 'file-saver'
FileSaver.saveAs(
blob文件,
`a4.pdf`
)
此方法与第一种一模一样,唯一不同的是此方法可以适用于各种文件
第三种:
利用pdf.output方法,输出blob文件,再进行blob的原始下载方式下载
const recordPdf = new jsPDF()
recordPdf.addImage(item.url,'JPEG',10,10,180,160)
let rawdata= recordPdf.output('blob');
let aLink = document.createElement('a');
let evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);//initEvent 不加后两个参数在FF下会报错
aLink.download = 'a4.pdf';
aLink.href = window.URL.createObjectURL(rawdata);
aLink.dispatchEvent(evt);
第四种:(该方法只适用于在node环境下的应用,不适合网页)
利用node进行指定下载路径
//输出buffer格式的数据
let rawdata= recordPdf.output(‘arraybuffer’);
// 指定路径地址,检查是否有此文件夹,没有就建一个
const fileDir = `${process.cwd().replace(/\\/g, '/')}/temp`
if (!fs.existsSync(fileDir)) fs.mkdirSync(fileDir)
const filePath = `${fileDir}/a4.pdf`
let buffer = new Buffer(u8)
cfs.writeFile(filePath, buffer,function(e){
if (e) throw e;
console.log('文件已被保存');
});
第五种:
如果浏览器版本低时,不支持buffer格式文件输出,(output直接输出的buffer文件为空对象时)请用以下方法
let rawdata= recordPdf.output();
let len = rawdata.length,
u8 = new Uint8Array(len);
while(len--) u8[len] = rawdata.charCodeAt(len);
// 指定路径地址,检查是否有此文件夹,没有就建一个
const fileDir = 路径
if (!fs.existsSync(fileDir)) fs.mkdirSync(fileDir)
const filePath = `${fileDir}/a4.pdf`
let buffer = new Buffer(u8)
let _that=this
// 向文件夹的文件写入内容
fs.writeFile(filePath, buffer,function(e){
if (e) throw e;
console.log('文件已被保存');
});
在此同时补充一个node写入文件的知识点:
https://itbilu.com/nodejs/core/Eyg7MCMMe.html