微信小程序生成pdf文件

环境准备:

        我这边采用的是express做后端语言操作,如果有不同请另外查阅pdfKit操作方式。

导入依赖版本,引入包资源

         // 生成pdf文件
        const doc = new PDFDocument();
        doc.font('/app/utils/微软雅黑.ttf')
        // const customPDFFont = doc.registerFont('medium','../utils/源柔黑体-Medium.ttf')
        const uuid = Date.now();
        const pdfStream = fs.createWriteStream(`output${uuid}.pdf`)
        doc.pipe(pdfStream);//关联pdfStream流
          doc.fontSize(14).text('我的兴趣类型特点和偏好',{align:'left'})
        doc.moveDown();// 移动到下一个段落

        // 添加第一个类型和文本
        doc.fontSize(12).text(typeOne,{align:'left'});
        doc.text(txt1,{align:'left'});
        doc.moveDown(); // 移动到下一个段落

        // 监听pdfStream完成后的方法
        pdfStream.on('finish',()=>{
            // 可以在这里加入oss对象存储之类的逻辑...

            // 读取自己写好的pdf文件
            fs.createReadStream(`output${uuid}.pdf`)
        })

        doc.end();

我这边使用了cos对象存储的API

pdfStream.on('finish',()=>{

          // 监听是否已经创建完毕了

          const params = {

            Bucket: '存储桶',

            Region: '上传域',

            Key: `文件名`,

            Body: fs.createReadStream(`output${uuid}.pdf`)

          }

         

            cos.putObject(params, (err,data)=>{

              if (err) {

                console.error(err);

              } else {

                console.log('文件上传成功:', data);

                // 删除临时 PDF 文件

                fs.unlink(`output${uuid}.pdf`, (err) => {

                    if (err) {

                        console.error('删除 PDF 出错:', err);

                    } else {

                        console.log('PDF 文件删除成功');

                    }

                });

                    res.send({

                      filePath: `output${uuid}.pdf`,

                      code: 200

                    })

               

              }

            });

        });

大家可以借鉴一下,由于微信小程序不自带导出pdf功能,以此需自己定义导出pdf功能。

我的逻辑是:

1、小程序点击导出

2、后端根据小程序发送的数据找到需要导出的文件数据

3、后端生成pdf文件写入数据

4、将pdf文件上传到oss,返回下载路径给微信小程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值