Pythonを使用してPDFファイルを圧縮する方法 | IronPDF

PythonでPDFファイルを圧縮する方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDFのCompressImagesメソッドを使用すると、Python開発者は品質設定を調整して埋め込み画像を圧縮することでPDFファイルのサイズを縮小でき、読みやすさを損なうことなくストレージの最適化やドキュメント共有の高速化を実現できます。

クイックスタート: Python で PDF ファイルを圧縮する

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/quickstart.py
from ironpdf import PdfDocument

# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
// このコードスニペットは利用できません!
from ironpdf import PdfDocument

# 1. Install IronPDF: pip install ironpdf
# 2. Load your PDF
pdf = PdfDocument("your-file.pdf")
# 3. Compress images (quality: 1-100)
pdf.CompressImages(60)
# 4. Save compressed PDF
pdf.SaveAs("compressed.pdf")
# 5. Adjust quality parameter to balance size vs quality
PYTHON

PDFファイルはドキュメントの保存と共有によく使用されますが、大きなファイルサイズでは扱いが煩雑になります。 10MBのレポートのアップロードやメール送信は、2MBの同等のファイルを共有するより顕著に遅くなり、ドキュメント量が多い場合には蓄積されるストレージコストもあります。 PDFの圧縮は、ファイルサイズを減らしながらコンテンツの可読性を維持することでこれに対処します。

このガイドでは、PythonでIronPDFを使用してPDFファイルを圧縮する方法を示します。 実用的なコード例では、標準的な画像圧縮と高度な解像度ベースの圧縮の両方をカバーしており、パイプラインに合ったアプローチを選択できます。HTMLからPDFへの変換や既存ドキュメントで作業する場合でも、同じ圧縮APIが適用されます。

IronPDFとは何か、なぜPDF圧縮に使うのか?

IronPDFは、PDFドキュメントの作成、読み取り、編集、最適化を処理するPython用PDFライブラリです。 ゼロから生成されたファイル、HTMLから変換されたファイル、またはディスクから読み込まれたファイルで動作します。 その圧縮APIは、PDFの大きさの主な要因である画像をターゲットにしています。

CompressImages メソッドは、1 から 100 までの整数と、画像を可視解像度に縮小するかどうかを指定するオプションのブール値を受け取ります。 この二重パラメータデザインでは、圧縮を正確に調整することができます: 高トラフィックのレポートダッシュボードは品質70を使用して視覚的なシャープを維持するかもしれませんが、内部アーカイブシステムは品質40を使用して保存スペースを最大化することができます。 ライブラリはすべてのエンコードを内部で処理するため、追加の依存関係は必要ありません。

IronPDFは、ドキュメントの作成、バーコード処理、OCR、およびZIPアーカイブを含むIron Suiteの一部であり、すべて独自 for Pythonインストールからカバーされています。 ゼロからPDFを作成するために既にIronPDFを使用している開発者にとって、圧縮は保存または配布ファイルの前に行う自然なステップを提供します。

どのようにしてPythonにIronPDFをインストールしますか?

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/install.sh
:ProductInstall
// このコードスニペットは利用できません!
:ProductInstall
SHELL

ご注意IronPDF for Pythonは、.NET 6.0 SDKを必要とするIronPDF .NETライブラリの上で動作します。 公式Microsoftウェブサイトから.NET 6.0 SDKをダウンロードし、pipインストールを実行する前にインストールしてください。)]

インストール後、本番環境用のライセンスキーを設定してください。 IronPDFには、クレジットカード不要で、すべての機能をカバーする無料の30日間トライアルが含まれています。 PyPIパッケージページには、最新のリリースノートと依存関係の詳細が記載されています。

IronPDFを使用してPDFファイルをどのように圧縮しますか?

CompressImages に整数の値を指定すると、文書全体にわたる埋め込み画像のサイズを縮小できます。 低い整数は、画像の忠実度を犠牲にしてより小さなファイルを生成します; 高い整数は、より多くの詳細を保持します。 以下の例は、標準的な圧縮呼び出しと、画像を表示可能なサイズまで縮小する高度な呼び出しの両方を示しています。

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/compress-basic.py
from ironpdf import PdfDocument

# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")

# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
// このコードスニペットは利用できません!
from ironpdf import PdfDocument

# Load the PDF document from a file
pdf = PdfDocument("Image based PDF.pdf")

# Compress images to quality 60 (lower numbers increase compression)
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Advanced: also scale images down to their visible size in the PDF
# Note: scaling can affect image clarity if pages are resized later
pdf.CompressImages(90, True)
pdf.SaveAs("Compressed.pdf")
PYTHON

圧縮パラメータの意味は何ですか?

CompressImages は 2 つのパラメータを受け取ります:

  • 品質(必須): 1から100の整数です。100の値は圧縮なしで元の画像品質を保持します。 40から80の間の値は、ほとんどの実用的な使用ケースをカバーしており、60は一般的な目的のドキュメントにおける一般的な開始ポイントです。
  • 表示サイズに合わせて拡大縮小(オプション):デフォルト値は False のブール値です。 True の場合、各画像はページ上でレンダリングされるサイズに合わせてリサンプリングされます。 これは品質圧縮の上に第二の縮小処理を追加し、ファイルサイズを小さくします。 その後、高DPIでページをスケールまたは印刷すると、アーティファクトが表示される可能性があります。

保存後、任意のPDFビューアで圧縮されたファイルを元のファイルと比較して、品質が要件を満たしていることを確認してください。 追加のパターン例については、PDF圧縮の例ページをご覧ください。

圧縮前のPDFはどのように見えますか?

Microsoft Edge ブラウザで開かれた PDF ファイル。IronPDF Python による圧縮が適用される前のファイルサイズは 458 KB です

圧縮後のPDFはどのように表示されますか?

Windows エクスプローラーに表示された圧縮済み PDF ファイル。ファイルサイズは 357 KB で、IronPDF CompressImages を品質 60 で使用した結果、458 KB から 22% 削減されています

比較では、クオリティ60を使用することで458 KBから357 KBまで減少(およそ22%)していることが示されています。写真コンテンツの割合が高いファイルは、通常、テキストやベクターグラフィックスが主体のファイルよりも大きな削減を達成します。

複数のPDFファイルにバッチ圧縮を適用する方法は?

PDFファイルが格納されたフォルダーの処理も、同じAPIに従います。各CompressImagesを呼び出し、結果を保存します。 以下の関数は、そのパターンを再利用可能なユーティリティに包みます。

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/batch-compress.py
import os
from ironpdf import PdfDocument

def batch_compress_pdfs(input_folder, output_folder, quality=60):
    """
    Compress all PDF files in a folder.

    Args:
        input_folder: Path to folder containing source PDFs
        output_folder: Path where compressed PDFs will be saved
        quality: Compression quality (1–100); default is 60
    """
    # Create the output folder if it does not exist
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"compressed_{filename}")

            try:
                pdf = PdfDocument(input_path)
                pdf.CompressImages(quality)
                pdf.SaveAs(output_path)
                print(f"Compressed: {filename}")
            except Exception as e:
                print(f"Error compressing {filename}: {e}")
// このコードスニペットは利用できません!
import os
from ironpdf import PdfDocument

def batch_compress_pdfs(input_folder, output_folder, quality=60):
    """
    Compress all PDF files in a folder.

    Args:
        input_folder: Path to folder containing source PDFs
        output_folder: Path where compressed PDFs will be saved
        quality: Compression quality (1–100); default is 60
    """
    # Create the output folder if it does not exist
    os.makedirs(output_folder, exist_ok=True)

    for filename in os.listdir(input_folder):
        if filename.endswith(".pdf"):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, f"compressed_{filename}")

            try:
                pdf = PdfDocument(input_path)
                pdf.CompressImages(quality)
                pdf.SaveAs(output_path)
                print(f"Compressed: {filename}")
            except Exception as e:
                print(f"Error compressing {filename}: {e}")
PYTHON

except ブロックにより、1つの破損ファイルやパスワードで保護されたファイルが原因でバッチ処理全体が停止するのを防ぎます。 例外メッセージと一緒にファイル名をログに記録することで、どのファイルが手動レビューを必要としているかを特定しやすくなります。 大量パイプラインの場合、フォルダをチャンクに分割し、並列スレッドで処理することを検討してください。

ヒント写真画像と技術図面が混在するドキュメントでは、2回のパスを実行します:写真にはクオリティ50を設定し、図面が多いページにはクオリティ85を設定してください。] PDFをマージするAPIを使用して、最適な品質レベルで各セクションを保持するように抽出して再マージします。

PDF圧縮にどの品質設定を使用すべきですか?

圧縮後にPDFをどのように使用するかに応じて、適切な品質設定が決まります。 3つの範囲で最も一般的なシナリオをカバーします。

高品質(70〜90)印刷や正式な配布に向けた文書は、この範囲を維持することでメリットがあります。 テキストは鮮明に保たれ、図面は標準印刷解像度でも読み取りやすく残ります。 ファイルのサイズ削減は控えめで、通常10〜25%ですが、出力はほとんどの読者にとってソースと区別がつきません。

中品質 (50–70): この範囲はウェブ配信やメール添付に適しています。 写真の内容は詳しく見るとわずかにソフトに見えることがありますが、ファイルサイズの削減(通常25-50%)により、読み込み時間やメール配信性が大幅に改善されます。 ほとんどのドキュメント管理システムとポータルのアップロードは、品質60でうまく動作します。

アグレッシブ圧縮 (30–50): 内部アーカイブ、長期間のストレージバックアップ、印刷されないドキュメントはこの範囲を使用できます。 品質40では、画像が明らかに柔らかくなりますが、PDFエンジンによってレンダリングされたテキスト(画像として埋め込まれているのではなく)は完全に鮮明なままです。このアプローチは、画像に変換され、表示前にサイズ変更されるドキュメントにも適しています。

重要元の未圧縮ファイルを常にアクセス可能に保つこと。] 圧縮は画像に対して不可逆圧縮です。 圧縮されたPDFから元の画像データを復元する方法はありません。

Pythonで圧縮結果をどのように検証しますか?

出力ファイルのサイズをプログラムでチェックすることで、ファイルがパイプラインの次のステップに進む前に、圧縮が目標値に達していることを確認できます。Pythonの組み込み関数os.path.getsizeは任意のファイルパスに対するバイト数を返すため、検証に追加のライブラリは必要ありません。

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-compress-pdf/verify-compression.py
import os
from ironpdf import PdfDocument

# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")

pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")

compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100

# Report results to confirm compression was effective
print(f"Original:   {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction:  {reduction_pct:.1f}%")
// このコードスニペットは利用できません!
import os
from ironpdf import PdfDocument

# Load and compress the document
pdf = PdfDocument("report.pdf")
original_size = os.path.getsize("report.pdf")

pdf.CompressImages(60)
pdf.SaveAs("report_compressed.pdf")

compressed_size = os.path.getsize("report_compressed.pdf")
reduction_pct = (1 - compressed_size / original_size) * 100

# Report results to confirm compression was effective
print(f"Original:   {original_size / 1024:.1f} KB")
print(f"Compressed: {compressed_size / 1024:.1f} KB")
print(f"Reduction:  {reduction_pct:.1f}%")
PYTHON

出力には、ログを記録したり、しきい値と照らし合わせて確認できる明確な削減率が示されます。 削減が期待を下回る場合、ドキュメントには埋め込み画像がほとんどないか、全く含まれない可能性があります。 その場合、CompressImagesはラスター画像のみを対象としているため、品質設定にかかわらずファイルサイズはほぼ変わりません。 この方法によって、テキストとベクトルグラフィックスは影響を受けません。

ご注意IronPDFの圧縮は、PDF内のラスタ画像をJPEGエンコーディングすることを対象としています。 JPEG圧縮標準は、品質パラメータが制御する品質とサイズのトレードオフを定義しています。 より低い値は、より積極的なJPEG量子化を適用し、ファイルサイズと画像の詳細を減少させます。

PythonでのPDF圧縮の次のステップは何ですか?

IronPDFのCompressImagesメソッドは、Python開発者に、PDFファイルのサイズを縮小するための単一で範囲が明確なAPIを提供します。 品質パラメータを調整して、ストレージの節約と視覚的な忠実性のバランスを取り、出力寸法が固定されている場合に第二の削減パス用として解像度スケーリングのブール値を追加します。 IronPDFが取り扱う内容のより広範な概要については、Python PDFライブラリの概要ページをご覧ください。

無料トライアルを開始して、HTMLからPDFへの変換、デジタル署名、フォーム処理、ドキュメントの結合を含むIronPDFのフル機能セットと共に圧縮をテストしてください。 トライアル期間が終了したら、ライセンスオプションを表示して、デプロイメントに適したプランを見つけてください。

IronPDFの他の機能をご覧になりたいですか? IronPDFの主要な機能を詳しく紹介するPython PDFチュートリアルをご覧ください。

よくある質問

PythonでPDFを圧縮するためにIronPDFをインストールするにはどうすればよいですか?

ターミナルでpip install ironpdfを実行します。IronPDF for Pythonは、最初に.NET 6.0 SDKのインストールが必要です。インストール後、PDFを圧縮するためにironpdfパッケージからPdfDocumentをインポートします。

PythonでPDFファイルを圧縮するための基本的なコードは何ですか?

PdfDocument("your-file.pdf")でファイルをロードし、1から100の整数の品質でCompressImages(60)を呼び出し、SaveAs("compressed.pdf")を使用して結果を保存します。ファイルサイズを画像の忠実度とバランスするために品質値を調整します。

品質パラメータはPDF圧縮にどのように影響しますか?

CompressImagesの品質パラメーターは1から100までの範囲です。低い値はファイルを小さくしますが、画像のぼかしがより目立ちます。高い値は詳細を保持しますが、ファイルサイズが大きくなります。実用的なケースのほとんどは40から80の間でカバーされ、60が一般的な出発点です。

CompressImagesに第2引数を渡せますか?

はい。第2引数としてTrueを渡すと、IronPDFは各画像をページ上での可視寸法にリサンプリングしてから品質圧縮を適用します。これにより第2の縮小パスが追加され、より小さなファイルが生成されますが、その後の高DPIでのスケーリングや印刷ではアーティファクトが表示される可能性があります。

PDF圧縮はテキストやベクトルグラフィックスに影響しますか?

CompressImagesはPDFに埋め込まれたラスタ画像を対象としています。PDFエンジンによって描画されたテキストやベクトルグラフィックスはこのメソッドの影響を受けません。そのため、埋め込み画像がほとんどないか全くないドキュメントではサイズ削減は最小限です。

Pythonでファイルサイズ削減を確認するにはどうすればよいですか?

os.path.getsize("compressed.pdf")を使用して保存されたファイルのバイト数を取得し、元のファイルと比較します。差を元のサイズで割ることで、縮減割合を浮動小数点数として取得できます。

Web配信に最適な品質範囲は何ですか?

50から70の品質設定は、ほとんどのWeb配信やメールシナリオに適しています。この範囲は通常、ファイルサイズを25%から50%削減し、画面上での読み取りにフォトグラフィックコンテンツを視覚的に受け入れられるままにします。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか?
サンプルを実行するHTML が PDF に変換されるのを確認します。