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

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

: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")
PYTHON

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

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

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

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

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

Microsoft Edgeブラウザで開かれたPDFファイル、IronPDF Python圧縮を適用する前のファイルサイズ458 KBを表示

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

Windows Explorerで圧縮されたPDFファイルエントリ、品質60でIronPDFのCompressImagesを使用し、458 KBから22%減の357 KBのファイルサイズを表示

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

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

私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

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

Milan Jovanovic

Microsoft MVP

ケーススタディを見る
Icon Quote related to 圧縮後のPDFはどのように表示されますか?

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

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

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る
Icon Quote related to 圧縮後のPDFはどのように表示されますか?

IronSuiteは私たちの業務において重要な役割を果たしています。これらは、フロアプランの作成や在庫管理の改善を含め、ビジネス全体の効率を向上させるツールです。

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

David Jones

リードソフトウェアエンジニア、Agorus Build

ケーススタディを見る

複数の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}")

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ブロックにより、単一の破損またはパスワード保護されたファイルでバッチ全体が中断されないようにします。 例外メッセージと一緒にファイル名をログに記録することで、どのファイルが手動レビューを必要としているかを特定しやすくなります。 大量パイプラインの場合、フォルダをチャンクに分割し、並列スレッドで処理することを検討してください。

ヒント写真画像と技術図面が混在するドキュメントでは、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}%")
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
テクニカルライター

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

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

準備はできましたか?
バージョン: 2026.6 リリースされたばかり
Still Scrolling Icon

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

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