微信小程序生成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,返回下载路径给微信小程序

### 编辑和管理 Python `requirements.txt` 文件 #### 修改现有依赖项 当需要修改已存在的依赖版本时,可以直接打开 `requirements.txt` 文件并手动更改对应的版本号。例如,如果当前文件中有如下条目: ```plaintext Django==3.2.7 requests>=2.25.0,<3.0.0 ``` 可以将其更改为特定的新版次来满足新的需求。 对于想要移除不再使用的库,则简单删除对应行即可[^1]。 #### 添加新依赖项 为了向项目引入额外的外部库,在本地环境中通过 pip 安装该软件包之后,应该再次执行命令导出最新的依赖列表到 `requirements.txt` 中去。这可以通过下面的方式完成: ```bash pip freeze > requirements.txt ``` 不过需要注意的是此方法会把所有已经安装过的包都写入文档里,可能包含了不必要的开发测试阶段才需要用到的东西。因此建议先清理掉那些临时性的或是仅限于某些特殊场景下的模块再做这项操作[^2]。 另一种更为精确的做法是在每次新增加一个必要的第三方组件后立即追加一行描述至文本结尾处;或者利用专门工具如 `pip-tools` 或者之前提到的 `pipreqs` 命令来自动生成只包含生产所需资源的要求清单[^4]。 #### 更新已有依赖项 随着时间和技术进步,原先指定的一些库可能会发布安全补丁或者其他改进型更新。这时就需要定期审查并考虑升级它们。一种做法是逐一手动调整各条目的版本约束条件后再重新冻结环境状态保存变更;而自动化程度更高的方案则是借助诸如 `pip-review` 这样的插件实现一键式批量处理过期/可选升迁提示等功能[^3]。 ```python import subprocess def update_requirements(): try: result = subprocess.run(['pip', 'install', '--upgrade','-r','requirements.txt'], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print(result.stdout.decode()) except Exception as e: print(f"An error occurred while updating packages: {e}") update_requirements() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值