利用jsPDF把图片转成pdf格式保存本地指定目录

**

利用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

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值