Skip to main content

様々な形式の画像をPDFに変換するPythonライブラリ

Project description

Image to PDF Converter (pdfforge)

様々な形式の画像を高品質なPDFに変換するPythonライブラリです。バッチ変換やメタデータ付与、コマンドライン操作、設定ファイルによるカスタマイズなど、実用的な機能を多数搭載しています。

特徴

  • 複数の画像を1つのPDFに結合
  • 様々な画像形式に対応(PNG, JPEG, BMP, GIF, TIFF, WebP, HEIC)
  • 画像の前処理機能
    • リサイズ
    • 回転
    • フィルター適用(ぼかし、シャープ化、エッジ検出など)
    • 色空間変換
  • 進捗表示
  • エラーハンドリング
  • 設定ファイルによるカスタマイズ
  • コマンドラインインターフェース

インストール

pip install pdfforge

基本的な使い方

コマンドラインから

# 基本的な使用方法
pdfforge input/*.jpg output.pdf

# 画像のリサイズを指定
pdfforge input/*.jpg output.pdf --width 800 --height 600

# 画像の回転を指定
pdfforge input/*.jpg output.pdf --rotate 90

# フィルターを適用
pdfforge input/*.jpg output.pdf --filter blur

# 複数のオプションを組み合わせ
pdfforge input/*.jpg output.pdf --width 800 --rotate 90 --filter sharpen

Pythonコードから

from pdfforge import ImageToPDF

# 基本的な使用方法
converter = ImageToPDF()
converter.convert("input/*.jpg", "output.pdf")

# 画像のリサイズを指定
converter = ImageToPDF(width=800, height=600)
converter.convert("input/*.jpg", "output.pdf")

# 画像の回転を指定
converter = ImageToPDF(rotate=90)
converter.convert("input/*.jpg", "output.pdf")

# フィルターを適用
from PIL import ImageFilter
converter = ImageToPDF(filter=ImageFilter.BLUR)
converter.convert("input/*.jpg", "output.pdf")

# 複数のオプションを組み合わせ
converter = ImageToPDF(
    width=800,
    height=600,
    rotate=90,
    filter=ImageFilter.SHARPEN
)
converter.convert("input/*.jpg", "output.pdf")

高度な使い方

設定ファイルの使用

~/.pdfforge/config.jsonに設定ファイルを作成することで、デフォルトの設定をカスタマイズできます:

{
    "width": 800,
    "height": 600,
    "rotate": 0,
    "filter": "none",
    "output_format": "PDF",
    "compression_quality": 85
}

エラーハンドリング

from pdfforge import ImageToPDF, ConversionError

try:
    converter = ImageToPDF()
    converter.convert("input/*.jpg", "output.pdf")
except ConversionError as e:
    print(f"変換エラー: {e}")

進捗表示のカスタマイズ

from pdfforge import ImageToPDF
from tqdm import tqdm

converter = ImageToPDF(progress_bar=tqdm)
converter.convert("input/*.jpg", "output.pdf")

サポートされている画像形式

  • PNG
  • JPEG
  • BMP
  • GIF
  • TIFF
  • WebP
  • HEIC

サポートされているフィルター

  • ぼかし(Blur)
  • シャープ化(Sharpen)
  • エッジ検出(Edge Detection)
  • 輪郭検出(Contour)
  • エンボス(Emboss)
  • スムージング(Smooth)

ライセンス

MITライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。

貢献

  1. このリポジトリをフォーク
  2. 新しいブランチを作成 (git checkout -b feature/amazing-feature)
  3. 変更をコミット (git commit -m 'Add some amazing feature')
  4. ブランチにプッシュ (git push origin feature/amazing-feature)
  5. プルリクエストを作成

作者

  • tikisan - 初期開発者

謝辞

  • Pillow - 画像処理ライブラリ
  • ReportLab - PDF生成ライブラリ
  • tqdm - プログレスバーライブラリ

注意事項

  • 大量の画像を処理する場合は、メモリ使用量に注意してください
  • HEIC形式の画像を処理するには、追加のライブラリが必要な場合があります
  • 一部の画像形式は、Pillowのインストール時に追加の依存関係が必要な場合があります

トラブルシューティング

一般的な問題

  1. メモリエラー

    • 画像のサイズを小さくする
    • バッチ処理を使用する
    • システムのメモリを増やす
  2. 画像形式のサポート

    • Pillowが正しくインストールされているか確認
    • 必要な追加ライブラリをインストール
  3. パフォーマンスの問題

    • 画像の前処理を最適化
    • マルチスレッド処理を検討
    • バッチサイズを調整

よくある質問

  1. Q: 大量の画像を処理するには? A: バッチ処理を使用し、適切なバッチサイズを設定してください。

  2. Q: 特定の画像形式がサポートされていない場合は? A: Pillowのドキュメントを確認し、必要な追加ライブラリをインストールしてください。

  3. Q: メモリ使用量を最適化するには? A: 画像のサイズを小さくし、バッチ処理を使用してください。

開発者向け情報

テスト

# すべてのテストを実行
pytest

# 特定のテストを実行
pytest tests/test_core.py

# カバレッジレポートを生成
pytest --cov=pdfforge tests/

コードスタイル

このプロジェクトはPEP 8に従っています。

ドキュメント

# ドキュメントを生成
cd docs
make html

更新履歴

0.1.0 (2024-03-XX)

  • 初期リリース
  • 基本的な画像からPDFへの変換機能
  • 画像の前処理機能
  • コマンドラインインターフェース
  • 設定ファイルサポート

ロードマップ

  • マルチスレッド処理のサポート
  • より多くの画像形式のサポート
  • PDFの暗号化機能
  • 画像の自動最適化
  • バッチ処理の改善
  • より詳細な進捗表示
  • エラーログの強化
  • ユニットテストの追加
  • ドキュメントの拡充
  • パフォーマンスの最適化

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

pdfforge-1.0.1.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

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

pdfforge-1.0.1-py3-none-any.whl (17.8 kB view details)

Uploaded Python 3

File details

Details for the file pdfforge-1.0.1.tar.gz.

File metadata

  • Download URL: pdfforge-1.0.1.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for pdfforge-1.0.1.tar.gz
Algorithm Hash digest
SHA256 f950126dce2cbd30b8dde47be76018d191271fd1de7750e9753822f6abb5b478
MD5 76f0c0a367513a0628e3356671bc04b4
BLAKE2b-256 292cb9371ed48fd772cb7bf9df21c512a8eb915571d1d42618f1805d9ce5c55b

See more details on using hashes here.

File details

Details for the file pdfforge-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: pdfforge-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 17.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for pdfforge-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d6db373e6a759a7bae438c832abc165b5df1205c560fb326a7205bd2d1afe414
MD5 c1ea00f3ba05c70dffdb4ae8a9c84ecd
BLAKE2b-256 eb07174f6e8114a2242cf0fac7e946ea832336ffb759cc169b970966782cb60c

See more details on using hashes here.

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