Skip to content

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.py

GitHub:

bash
wget https://github.com/SDCOM-0415/shit/raw/refs/heads/main/script/cbz2pdf.py

交互模式

直接运行脚本,按提示依次输入:

bash
python cbz2pdf.py

运行流程:

  1. 输入 CBZ 文件路径或包含 CBZ 的文件夹路径
  2. 输入 PDF 输出目录
  3. 选择是否使用自定义命名格式(默认保留原文件名)
  4. 设置并行转换数(1-8,默认 4)
  5. 确认后开始转换

非交互模式

提供 -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

文档支持多语言