使用nodejs调用python脚本实现一个pdf合并功能
前言
使用 js 实现有些功能会有些麻烦甚至于无法实现,比如实现一个 pdf 合并功能,前端 js 实现会比较复杂
这时候我们就需要借助第三方的帮助了
看完这篇文章能学到什么
- 学会使用 nodejs 调用 python 脚本
- 学会如何将长时间任务的结果返回给前端
- nodejs 调用其他语言脚本的本质
- 使用 python 新建虚拟环境
为何用 python
- python 语言简单易学,语法简单,学习成本低
- python 语言有大量的第三方库,可以实现很多功能
- python 运行条件简单,很容易被集成
整体实现步骤
- 初始化一个 nodejs 项目
- 初始化一个 python 环境,安装依赖 PyMuPDF
- 编写 python 脚本,实现 pdf 合并功能
- 使用 child_process 模块创建子进程,执行对应的 python 脚本
代码实现(全步骤详细实现)
如果只关心最终源码的话可以直接跳过这里,到最终源码部分
1. 初始化一个 nodejs 项目
新建一个文件夹比如 pdfMerge,然后在该文件夹打开终端,输入以下命令初始化一个 nodejs 项目
1 | npm init -y |
这会在你的项目下创建一个 package.json 文件,里面包含了项目的基本信息。
接着在项目根目录下新建一个 index.js 文件,一个 python 文件夹,在 python 文件夹下创建一个 scripts 文件夹,然后在 scripts 文件夹下新建一个 merge_pdfs.py 文件
然后修改一下 package.json 文件,添加一个 start 命令,用于启动项目,再添加一个 type 属性,值为 module
修改之后你的 package.json 文件应该是这样子
1 | { |
2. 初始化一个 python 环境,安装依赖 PyMuPDF
执行以下命令,在刚刚创建的 python 文件夹中创建一个虚拟环境
如果你是 macos 系统,使用以下命令
1 | cd python # 切换到python文件夹 |
如果你是 window 系统,使用以下命令
1 | cd python # 切换到python文件夹 |
这样我们的项目初始化就完成了,执行完上面的步骤,你的项目目录结构应该是这样的
3. 编写 python 脚本,实现 pdf 合并功能
1 | import fitz # PyMuPDF |
导入 pdf 文件
随便找两个 pdf 文件放到根目录下
我这里也提供我使用的 pdf 文件
编写 index.js 文件
使用 nodejs 内置的 child_process 模块创建子进程,执行对应的 python 脚本
1 | import { spawn } from "node:child_process"; // 导入子进程模块 |
执行后的目录结构
执行完成后再打开合并之后的 pdf 文件进行验证,也是没有问题的
- 感谢您的赞赏。
赞赏名单
因为有你们的支持,我才体会到写文章的价值。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自星凪
评论 ()