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 "/path/to/Chapter101.cbz" -o "/path/to/PDF"
# フォルダ全体をバッチ変換
python cbz2pdf.py -i "/path/to/Comics" -o "/path/to/PDF"
# 元のファイル名を保持(デフォルト動作、省略可)
python cbz2pdf.py -i "/path/to/Comics" -o "/path/to/PDF" --keep-name
# カスタム命名形式
python cbz2pdf.py -i "/path/to/Comics" -o "/path/to/PDF" --name-format "{index:03d}_{name}"
# 確認をスキップして即座に開始
python cbz2pdf.py -i "/path/to/Comics" -o "/path/to/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} | 元のファイル名(拡張子なし) | Chapter101 |
{index} | ファイル番号(1から開始) | 1 2 ... |
{date} | 現在の日付 | 20260504 |
形式例:
{name}.pdf → Chapter101.pdf
{index:03d}_{name}.pdf → 001_Chapter101.pdf
{date}_{name}.pdf → 20260504_Chapter101.pdf処理の流れ
対話モード
========================================================
CBZ → PDF 変換ツール
========================================================
【入力パス】
CBZ ファイルパス、または CBZ を含むフォルダパスを入力
入力パス: /path/to/Comics
5 個の CBZ ファイルを検出(サブディレクトリ含む)
【出力ディレクトリ】
PDF ファイルの保存先ディレクトリを入力
出力ディレクトリ: /path/to/PDF
✓ 出力ディレクトリ: /path/to/PDF
【ファイル命名】
デフォルト:元のファイル名を保持(例:Chapter101.cbz → Chapter101.pdf)
カスタム命名形式を使用しますか? (y/N): n
✓ 元のファイル名を保持
【並列変換】
現在:4 ファイル同時変換
並列数を設定(1-8、Enter でデフォルト維持): 4
✓ 4 並列変換に設定
========================================================
入力: /path/to/Comics
ファイル数: 5 個の CBZ
出力先: /path/to/PDF
命名: 元のファイル名を保持
並列: 4
変換を開始しますか? (Y/n): Y
========================================================
変換開始...(並列:4)
========================================================
✓ Chapter101.pdf (2.3 MB)
✓ Chapter102.pdf (1.8 MB)
⊙ Chapter103.pdf は既に存在します、スキップ
✗ Chapter104.cbz - 変換失敗:CBZ 内に画像が見つかりません
========================================================
変換完了!
成功:2 スキップ:1 失敗:1
ファイル保存先:/path/to/PDF
========================================================非対話モード
bash
python cbz2pdf.py -i "/path/to/Comics" -o "/path/to/PDF" -j 4 -y========================================================
CBZ → PDF 変換ツール
========================================================
✓ 入力: /path/to/Comics
✓ 出力先: /path/to/PDF
✓ 命名形式: {name}
✓ 並列変換: 4
========================================================
変換開始...(並列:4)
========================================================
✓ Chapter101.pdf (2.3 MB)
✓ Chapter102.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