cbz2pdf.py
CBZ 漫画档案转 PDF 转换工具,支持单文件或批量转换,跨平台兼容,当前版本v1.0
功能特点
- CBZ 转 PDF — 将 CBZ(ZIP 压缩的图片包)转换为 PDF 文件
- 单文件/批量转换 — 支持单个 CBZ 文件,或整个文件夹(含子目录)批量处理
- 交互/非交互双模式 — 交互模式引导式配置,非交互模式直接传参执行
- 自动依赖安装 — 检测到缺失的 Pillow 依赖时,提示并自动安装
- 自定义命名格式 — 支持
{name}{index}{date}变量自由组合 - 并行转换 — 多线程并行处理多个 CBZ 文件,加速批量转换
- 跳过已存在 — 输出 PDF 已存在时自动跳过,不重复转换
- 跨平台兼容 — Windows / macOS / Linux 均可用,Windows 终端 UTF-8 自适应
依赖
| 依赖 | 用途 | 安装 |
|---|---|---|
| Python 3.6+ | 运行环境 | — |
| Pillow | 图片读取与 PDF 生成 | pip install Pillow |
脚本启动时会自动检测,缺失会提示并引导安装,无需手动操作。
使用方法
下载脚本
CNB:
bash
wget https://cnb.cool/SDCOM/shit/-/git/raw/main/script/cbz2pdf.pyGitHub:
bash
wget https://github.com/SDCOM-0415/shit/raw/refs/heads/main/script/cbz2pdf.py交互模式
直接运行脚本,按提示依次输入:
bash
python cbz2pdf.py运行流程:
- 输入 CBZ 文件路径或包含 CBZ 的文件夹路径
- 输入 PDF 输出目录
- 选择是否使用自定义命名格式(默认保留原文件名)
- 设置并行转换数(1-8,默认 4)
- 确认后开始转换
非交互模式
提供 -i 和 -o 参数后即可跳过所有交互提示直接开始转换:
bash
# 转换单个 CBZ 文件
python cbz2pdf.py -i "D:\Comics\第101话.cbz" -o "D:\PDF"
# 批量转换整个文件夹
python cbz2pdf.py -i "D:\Comics" -o "D:\PDF"
# 保留原文件名(默认行为,可省略)
python cbz2pdf.py -i "D:\Comics" -o "D:\PDF" --keep-name
# 自定义命名格式
python cbz2pdf.py -i "D:\Comics" -o "D:\PDF" --name-format "{index:03d}_{name}"
# 跳过确认直接开始
python cbz2pdf.py -i "D:\Comics" -o "D:\PDF" -y命令行参数
| 参数 | 缩写 | 说明 |
|---|---|---|
--input PATH | -i | 输入:CBZ 文件或包含 CBZ 的文件夹(非交互模式必需) |
--output DIR | -o | 输出目录(非交互模式必需) |
--keep-name | 保留原文件名(默认行为) | |
--name-format FMT | 自定义文件名格式,可用变量:{name} {index} {date} | |
--jobs N | -j | 并行转换数,范围 1-8,默认 4 |
--yes | -y | 跳过确认,直接开始转换 |
命名格式变量
| 变量 | 说明 | 示例 |
|---|---|---|
{name} | 原文件名(不含扩展名) | 第101话 |
{index} | 文件序号(从 1 开始) | 1 2 ... |
{date} | 当前日期 | 20260504 |
格式化示例:
{name}.pdf → 第101话.pdf
{index:03d}_{name}.pdf → 001_第101话.pdf
{date}_{name}.pdf → 20260504_第101话.pdf运行流程
交互模式
========================================================
CBZ 转 PDF 转换工具
========================================================
【输入路径】
请输入 CBZ 文件路径或包含 CBZ 文件的文件夹路径
输入路径: D:\Comics
找到 5 个 CBZ 文件 (含子目录)
【输出目录】
请输入 PDF 文件的保存目录
输出目录: D:\PDF
✓ 输出目录: D:\PDF
【文件命名】
默认保留原文件名 (如 第101话.cbz → 第101话.pdf)
是否使用自定义命名格式? (y/N): n
✓ 保留原文件名
【并行转换】
当前: 4 个文件同时转换
设置并行数 (1-8, 回车保持默认): 4
✓ 设置为 4 个并行转换
========================================================
输入: D:\Comics
文件数: 5 个 CBZ
输出到: D:\PDF
命名: 保留原文件名
并行: 4
开始转换? (Y/n): Y
========================================================
开始转换... (并行: 4)
========================================================
✓ 第101话.pdf (2.3 MB)
✓ 第102话.pdf (1.8 MB)
⊙ 第103话.pdf 已存在,跳过
✗ 第104话.cbz - 转换失败: CBZ 中未找到图片文件
========================================================
转换完成!
成功: 2 跳过: 1 失败: 1
文件保存在: D:\PDF
========================================================非交互模式
bash
python cbz2pdf.py -i "D:\Comics" -o "D:\PDF" -j 4 -y========================================================
CBZ 转 PDF 转换工具
========================================================
✓ 输入: D:\Comics
✓ 输出到: D:\PDF
✓ 命名格式: {name}
✓ 并行转换: 4
========================================================
开始转换... (并行: 4)
========================================================
✓ 第101话.pdf (2.3 MB)
✓ 第102话.pdf (1.8 MB)
转换完成!注意事项
- 图片格式支持:CBZ 内的 JPG、PNG、WebP、GIF、BMP 均可识别转换
- PDF 兼容性:所有图片统一转换为 RGB 模式,确保最大兼容性
- PDF 分辨率:默认 150 DPI,兼顾清晰度与文件大小
- 并行安全:并行转换数建议不超过 8,过高可能导致内存不足
- 跳过机制:输出 PDF 已存在时自动跳过,再次运行不会重复转换
- Windows 终端:脚本自动检测并设置 UTF-8 编码,中文文件名正常显示
项目仓库
CNB:https://cnb.cool/SDCOM/shit/-/blob/main/script/cbz2pdf.py
GitHub:https://github.com/SDCOM-0415/shit/blob/main/script/cbz2pdf.py
© 作者
SDCOM