Skip to main content

指定したファイルサイズを上限としてPDFを複数のファイルに分割するコマンドラインツール

Project description

PDF Size Splitter

License: MIT Python 3.8+

指定したファイルサイズ(バイト)を上限として、PDFを複数のファイルに分割するコマンドラインツールです。
ページ構造を破壊せず、指定サイズに収まる最大のページ数ごとに自動で分割します。


特徴(Features)

精密なファイルサイズ分割

PDFの構造を考慮しながら、指定したサイズに近づくようにページ単位で分割します。
オンラインツールでは不安定になりがちな「サイズ基準の分割」を、ローカルで再現性高く実行できます。

ローカル完結で安全

アップロード不要で、すべてローカル環境で処理されます。
機密情報を含むPDFでも安全に扱えるため、業務用途にも適しています。

制限なし・高速処理

オンラインサービスにありがちな

  • ファイルサイズ上限
  • タスク数制限
  • 待ち時間

といった制約がありません。大量ファイルのバッチ処理にも向いています。

透明性のある処理ロジック

分割アルゴリズムはコードとして公開されており、挙動がブラックボックスになりません。
必要に応じてロジックを改良したり、ワークフローに合わせて拡張できます。

ワークフローへの統合が容易

Pythonスクリプトとして動作するため、

  • 自動処理パイプライン
  • 他ツールとの連携
  • GUI化やAPI化

など、用途に応じた柔軟な統合が可能です。

再現性の高い結果

同じ入力に対して常に同じ出力が得られるため、
業務フローや自動化処理で重要な「結果の安定性」を確保できます。


機能

  • 指定したサイズ(バイト)でPDFを自動分割
  • ページ構造を保持
  • 効率的な分割アルゴリズム(平均ページサイズからの予測 + 微調整)
  • コマンドラインインターフェース
  • 指定サイズ以下のPDFは分割不要としてスキップ(ファイルを生成しない)
  • 適切なエラーハンドリング(無効なPDF、暗号化PDF、権限エラーなど)

必須環境

  • Python 3.8以上
  • 依存ライブラリ: pypdf

インストール方法

PyPIからインストール(推奨)

pip install pdf-size-splitter

ソースからインストール

  1. リポジトリをクローンまたはダウンロードします。
  2. 以下のコマンドで依存ライブラリをインストールします。
pip install -r requirements.txt

使い方

以下のコマンド形式で実行します。

python pdf_size_splitter.py <入力PDFのパス> <上限サイズ(バイト)> [-o 出力先ディレクトリ] [-v]

実行例

# sample.pdf を 10MB (10000000バイト) 単位で分割し、現在のディレクトリに保存する
python pdf_size_splitter.py sample.pdf 10000000

# sample.pdf を 5MB 単位で分割し、"output" フォルダに保存する
python pdf_size_splitter.py sample.pdf 5000000 -o output

# 詳細な進捗情報を表示しながら分割する
python pdf_size_splitter.py sample.pdf 5000000 -v

出力ファイル名の命名規則

分割後のファイルは以下の命名規則で保存されます:

  • 元のファイル名(拡張子除く)+ _part + 連番 + .pdf
  • 例:sample.pdfsample_part1.pdf, sample_part2.pdf, sample_part3.pdf...

エラーハンドリング

以下のような場合、適切なエラーメッセージが表示されます:

  • 無効なPDFファイル: PDFファイルが破損している場合や、PDFとして無効なファイルを開こうとした場合

    • エラーメッセージ: 「無効なPDFファイルです」
  • 暗号化されたPDFファイル: パスワードで保護された暗号化PDFファイルを開こうとした場合

    • エラーメッセージ: 「暗号化されたPDFファイルはサポートされていません」
  • ファイル読み取り権限: ファイルが存在するが、読み取り権限がない場合

    • エラーメッセージ: 「ファイルを読み取る権限がありません」
  • ファイルが存在しない: 指定したPDFファイルが存在しない場合

    • エラーメッセージ: 「ファイルが存在しません」
  • 出力先ディレクトリが存在しない: 指定した出力先ディレクトリが存在しない場合

    • エラーメッセージ: 「出力先ディレクトリが存在しません」
  • 上限サイズが無効: 上限サイズに0以下の数値を指定した場合

    • エラーメッセージ: 「上限サイズは1以上の数値を指定してください」
  • 1ページがサイズ超過: 1ページ目が既に指定サイズを超過している場合

    • エラーメッセージ: 「1ページ目が既に指定サイズを超過しているため分割できません」

ライセンス

このプロジェクトはMIT Licenseの下で公開されています。詳細は LICENSE ファイルを参照してください。

作者

momoandbanana22

貢献

貢献を歓迎します!バグ報告や機能リクエストは Issues にてお願いします。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdf_size_splitter-1.0.7.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdf_size_splitter-1.0.7-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file pdf_size_splitter-1.0.7.tar.gz.

File metadata

  • Download URL: pdf_size_splitter-1.0.7.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pdf_size_splitter-1.0.7.tar.gz
Algorithm Hash digest
SHA256 2f58041bcf08f634b920aaee8067a6bf617ddc630abd312abbd86f620ee2b56d
MD5 7fb0e2825861c59511ad44dee391172b
BLAKE2b-256 a6fa6135d1b8eaba4ba9ec4a8f5e762574bf72816ef8c27490095402c4766fcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdf_size_splitter-1.0.7.tar.gz:

Publisher: publish-to-pypi.yml on momoandbanana22/pdf-size-splitter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pdf_size_splitter-1.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for pdf_size_splitter-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 93ed7a278cac7c32ca6bf155afc9c865ecb86acef37e535369a3209207c6c81d
MD5 7b633d01bebda825de14b608cc3aaa63
BLAKE2b-256 5daac5a0f5cbb6b88865a5d2f6b111dc29b39d6b4f4d6d749e06514845e96762

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdf_size_splitter-1.0.7-py3-none-any.whl:

Publisher: publish-to-pypi.yml on momoandbanana22/pdf-size-splitter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page