PythonでPDFファイルを圧縮する方法
IronPDFのCompressImagesメソッドはPython開発者に埋め込まれた画像を調整可能な品質設定で圧縮しPDFファイルサイズを削減し、ストレージ最適化とドキュメント共有の高速化を提供しつつ読みやすさを損なわない。
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
最小限のワークフロー(5ステップ)
- PDFファイルを圧縮するのに必要なPythonライブラリをインストールする。
PdfDocumentを使用してPDFドキュメントをロードします。CompressImagesを品質整数(1–100)で呼び出します。SaveAsを使用して縮小ファイルを保存します。- 任意のPDFビューワーで出力を確認して品質を確認します。
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をインストールしますか?
:ProductInstall
インストール後、本番環境用のライセンスキーを設定してください。 IronPDFには、クレジットカード不要で、すべての機能をカバーする無料の30日間トライアルが含まれています。 PyPIパッケージページには、最新のリリースノートと依存関係の詳細が記載されています。
IronPDFを使用してPDFファイルをどのように圧縮しますか?
品質の整数をCompressImagesに渡すことでドキュメント全体の埋め込まれた画像のサイズを縮小します。 低い整数は、画像の忠実度を犠牲にしてより小さなファイルを生成します; 高い整数は、より多くの詳細を保持します。 以下の例は、標準的な圧縮呼び出しと、画像を表示可能なサイズまで縮小する高度な呼び出しの両方を示しています。
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")
圧縮パラメータの意味は何ですか?
CompressImagesは2つのパラメータを受け入れます:
- 品質(必須): 1から100の整数です。100の値は圧縮なしで元の画像品質を保持します。 40から80の間の値は、ほとんどの実用的な使用ケースをカバーしており、60は一般的な目的のドキュメントにおける一般的な開始ポイントです。
- スケールを表示サイズに合わせる(オプション):デフォルトは
Falseのブール。Trueのとき、各画像はそのページのレンダリング寸法に合わせて再サンプリングされます。 これは品質圧縮の上に第二の縮小処理を追加し、ファイルサイズを小さくします。 その後、高DPIでページをスケールまたは印刷すると、アーティファクトが表示される可能性があります。
保存後、任意のPDFビューアで圧縮されたファイルを元のファイルと比較して、品質が要件を満たしていることを確認してください。 追加のパターン例については、PDF圧縮の例ページをご覧ください。
圧縮前のPDFはどのように見えますか?

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

比較では、クオリティ60を使用することで458 KBから357 KBまで減少(およそ22%)していることが示されています。写真コンテンツの割合が高いファイルは、通常、テキストやベクターグラフィックスが主体のファイルよりも大きな削減を達成します。
複数のPDFファイルにバッチ圧縮を適用する方法は?
PDFファイルのフォルダを処理するには同じAPIを使用します:各CompressImagesを呼び出し結果を保存します。 以下の関数は、そのパターンを再利用可能なユーティリティに包みます。
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}")
exceptブロックにより、単一の破損またはパスワード保護されたファイルでバッチ全体が中断されないようにします。 例外メッセージと一緒にファイル名をログに記録することで、どのファイルが手動レビューを必要としているかを特定しやすくなります。 大量パイプラインの場合、フォルダをチャンクに分割し、並列スレッドで処理することを検討してください。
PDF圧縮にどの品質設定を使用すべきですか?
圧縮後にPDFをどのように使用するかに応じて、適切な品質設定が決まります。 3つの範囲で最も一般的なシナリオをカバーします。
高品質(70〜90):印刷や正式な配布に向けた文書は、この範囲を維持することでメリットがあります。 テキストは鮮明に保たれ、図面は標準印刷解像度でも読み取りやすく残ります。 ファイルのサイズ削減は控えめで、通常10〜25%ですが、出力はほとんどの読者にとってソースと区別がつきません。
中品質 (50–70): この範囲はウェブ配信やメール添付に適しています。 写真の内容は詳しく見るとわずかにソフトに見えることがありますが、ファイルサイズの削減(通常25-50%)により、読み込み時間やメール配信性が大幅に改善されます。 ほとんどのドキュメント管理システムとポータルのアップロードは、品質60でうまく動作します。
アグレッシブ圧縮 (30–50): 内部アーカイブ、長期間のストレージバックアップ、印刷されないドキュメントはこの範囲を使用できます。 品質40では、画像が明らかに柔らかくなりますが、PDFエンジンによってレンダリングされたテキスト(画像として埋め込まれているのではなく)は完全に鮮明なままです。このアプローチは、画像に変換され、表示前にサイズ変更されるドキュメントにも適しています。
Pythonで圧縮結果をどのように検証しますか?
出力ファイルサイズをプログラム上で確認すると、圧縮がターゲットに達したかどうかが確認されパイプラインの次のステップに進む前に、Pythonの組み込みのos.path.getsizeは任意のファイルパスのバイト数を返すので、検証には追加のライブラリは必要ありません。
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}%")
出力には、ログを記録したり、しきい値と照らし合わせて確認できる明確な削減率が示されます。 削減が期待を下回る場合、ドキュメントには埋め込み画像がほとんどないか、全く含まれない可能性があります。 その場合、CompressImagesがラスタ画像のみをターゲットにしているため、画像の品質設定に関係なくファイルサイズはほとんど変化しません。 この方法によって、テキストとベクトルグラフィックスは影響を受けません。
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%削減し、画面上での読み取りにフォトグラフィックコンテンツを視覚的に受け入れられるままにします。
How can you verify the effectiveness of PDF compression in Python?
You can verify PDF compression effectiveness by comparing file sizes before and after compression. Use Python's os.path.getsize function to check the byte count of both versions and calculate the reduction percentage.
Why should you keep the original uncompressed PDF file accessible?
The original uncompressed PDF should be kept accessible because compression is lossy for images; you cannot recover the original image data from the compressed file. This ensures you have access to higher quality files if needed.
What are the next steps after using CompressImages for PDF compression?
After compressing PDFs with CompressImages, you can explore other IronPDF features such as HTML to PDF conversion, digital signatures, form handling, and document merging. A free trial allows you to test the full feature set before choosing a licensing option.

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