C#でPDFを圧縮する方法

IronPDFを使ってC#でPDFを圧縮する方法

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

IronPDFはC#で強力なPDF圧縮機能を提供し、埋め込み画像の圧縮やPDFのツリー構造の最適化によってファイルサイズを縮小し、品質を維持しながら保存や共有のためにドキュメントをより管理しやすくします。

PDF圧縮は、PDFドキュメントのファイルサイズを縮小し、保存、共有、送信をより管理しやすくします。 HTMLから生成されたPDFでも、既存のPDFファイルでも、圧縮はドキュメントの処理を最適化するために不可欠です。

通常、PDFファイルサイズの大半は画像で占められています。 IronPDFは埋め込み画像のサイズを縮小し、テーブルの多いPDFによく見られるツリー構造を最適化する圧縮機能を提供します。 これらのテクニックは、URLからPDFへの変換HTMLファイルへの変換など、さまざまな方法で作成されたPDFでシームレスに動作します。

クイックスタート: IronPDFでPDF圧縮を簡単に実現する

IronPDFの圧縮ツールを使ってPDFファイルサイズを縮小します。 PdfDocument.FromFile を使用して PDF ファイルを読み込み、CompressAndSaveAs を呼び出すことで、最適化された PDF ファイルを圧縮して保存できます。このプロセスにより、品質を維持しながらファイルサイズを大幅に削減できます。

  1. IronPDF をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPdf
  2. このコード スニペットをコピーして実行します。

    PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル

    arrow pointer


ご注意CompressImagesCompressStructTreeCompress(CompressionOptions) などの以前の圧縮メソッドは非推奨です。

PDF内の画像を圧縮するにはどうすればよいですか?

JPEG圧縮品質は、0(最大圧縮)から100(最小損失)までの値を受け付け、その値の適用方法は基となるエンジンによって決定されます。 これらのレベルを理解することは、埋め込み画像を含むPDFを扱うときや、フォントやグラフィックを管理する必要があるときに役立ちます。

  • 90%以上:高品質
  • 80%-90%: 中程度の品質
  • 70%~80%: 低品質

品質とファイルサイズのバランスをとるために、さまざまな値を試してください。画質の低下は、入力画像の種類によって異なります。ある画像は、他の画像よりも明瞭度の低下が目立ちます。 これは、Azure Blob Storage からの画像を扱う場合や、カスタム透かしを入れた PDF を作成する場合に特に重要です。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-image.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

// Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")

' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
$vbLabelText   $csharpLabel

画像圧縮にはどのような効果が期待できますか?

39.24%削減されました!

圧縮.pdf(449 KB)と非圧縮.pdf(739 KB)の画像圧縮結果を示すファイル比較

品質パラメーターはどのように機能しますか?

CompressAndSaveAs 内の quality パラメータは、埋め込まれたすべての画像に適用される JPEG エンコード品質を制御します。 0(最大圧縮、最低品質)から100(最小圧縮、最高品質)までの整数を渡すか、null を渡して画像圧縮を完全にスキップします。

IronPDFは圧縮中に自動的に画像を再エンコードしスケールダウンするため、追加のオプションは必要ありません。 低い値はファイルを小さくしますが、目に見えるアーティファクトが発生する可能性があります。コンテンツに最適なバランスを見つけるために実験してください。


PDFのツリー構造を圧縮するには?

この機能は、Chrome Engine によって作成されたツリー構造を削除することで PDF サイズを縮小します。有効にするには、CompressAndSaveAs の 3 番目のパラメータとして removeStructureTree: true を渡してください。 これは、Chromeエンジンを使用して生成された広範なテーブルデータを含むPDFで最も効果的です。 レンダリングエンジンによっては、この構造を持たずにPDFを出力するものもあるため、そのような場合にはこの機能は効果的ではありません。 このテクニックは、複雑なレイアウトを扱うときや、冗長な構造要素を持つ複数のPDFをマージするときに役立ちます。

ツリー構造を削除すると、テキストの強調表示や抽出の効果に影響する可能性があります。 圧縮を適用するとき、特にユーザーが圧縮されたPDFからテキストや画像を取り出す必要がある場合は、このトレードオフを考慮してください。

Test CompressAndSaveAs with tree structure removal using this PDF with table data.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("table.pdf");

// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")

' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
$vbLabelText   $csharpLabel

ツリー構造圧縮はどのようなファイル サイズ削減を実現できますか?

67.90%削減しました! より大きなテーブルPDFでこの割合は増加します。

圧縮結果を示すcompressedTable.pdf(52 KB)とtable.pdf(162 KB)のファイル比較

両方の圧縮方法を一緒に適用するにはどうすればよいですか?

CompressAndSaveAs は、単一の呼び出しで画像とツリー構造の圧縮の両方を処理します。quality 値を渡して、removeStructureTreetrue に設定します。 このような複合的なアプローチは、画像や構造化データを含む複雑なPDF(図表を含むレポートや、表やグラフィックが埋め込まれた文書など)に対して特に効果的です。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
$vbLabelText   $csharpLabel

CompressAndSaveAsはどのパラメーターを受け入れるのですか?

  • outputPath (文字列): 圧縮された PDF が保存されるファイル パス。

  • quality (int?, 0–100): 埋め込まれたすべての画像に適用される JPEG 品質。 低い値はより小さいファイルを生成します。 画像圧縮を完全にスキップするには、null を渡してください。

  • removeStructureTree (bool、デフォルト値 false): true の場合、PDF の構造ツリーを削除してファイルサイズをさらに削減します。テーブルを含む HTML 生成 PDF に最も効果的です。

圧縮を適用する場合は、使用ケースを考慮してください。 アーカイブの目的は、ファイルサイズよりも品質を優先する場合があります。ウェブ配信の場合は、ファイルサイズを小さくする必要があります。 PDF/A準拠文書と標準PDFのどちらで作業しているかに基づいて、設定を微調整します。

ディスクに保存せずにPDFを圧縮するにはどうすればよいですか?

APIレスポンス、クラウド関数、メール添付ファイルなど、多くの実際のシナリオでは、圧縮されたPDFをディスクに書き込むことは不要または非現実的です。

CompressPdfToBytes は圧縮された PDF をバイト配列として返します。これにより、出力の保存方法や送信方法を完全に制御できます。 CompressPdfToBytesCompressPdfToStream はどちらも、圧縮の実行方法を制御するオプションの CompressionMode パラメータを受け入れます。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();

File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()

File.WriteAllBytes("compressed.pdf", compressedBytes)
$vbLabelText   $csharpLabel

利用可能な圧縮モードのオプションは何ですか?

展開環境によって、ディスクアクセスやパフォーマンスに関する制約は異なります。 CompressionMode 列挙型を使用すると、適切なトレードオフを選択できます。

  • Automatic (デフォルト): システムの機能に基づいて最適な圧縮方法を選択します。 最初に HighQuality を試行し、ディスク アクセスが制限されている場合は FastMemory にフォールバックします。

  • FastMemory: ディスク I/O を使用せずに、メモリ内で完全に圧縮を実行します。 最速のオプションですが、画像のリサンプリングやダウンサンプリングは適用されないため、出力ファイルサイズが大きくなります。

  • HighQuality: 一時ディスクアクセスを使用して最大圧縮を適用します。 画像の最適化を最大限に行い、最小サイズの出力ファイルを生成します。 システムの一時ディレクトリへの書き込み権限が必要です。

バイト配列の代わりに Stream が必要な場合は、CompressPdfToStream を使用してください。 これは、HTTPレスポンス、クラウドストレージへのアップロード、またはストリームベースのワークフローに直接パイプする場合に便利です。

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();

File.WriteAllBytes("compressed.pdf", compressedStream.ToArray());
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
    File.WriteAllBytes("compressed.pdf", compressedStream.ToArray())
End Using
$vbLabelText   $csharpLabel

CompressPdfToBytes および CompressPdfToStream は、Java、 Node.js 、Python を含むすべてのIronPDFプラットフォームで利用可能になりました。

次に何ができるのかを見てみましょうか? チュートリアルのページはこちらをご覧ください:追加機能

よくある質問

PDFのファイルサイズは、圧縮によってどの程度削減できますか?

IronPDFは画像圧縮と構造最適化によりPDFファイルサイズを最大75%削減することができます。この例では、画像圧縮技術によってファイルが39.24%削減されています。

IronPDFはC#でどのようにPDFを圧縮しますか?

IronPDFは、単一のメソッド「CompressAndSaveAs」を通じて圧縮処理を行います。このメソッドは、設定可能なJPEG画質(0~100)を使用して埋め込み画像のサイズを縮小し、オプションで`removeStructureTree: true`を設定することでPDFの内部構造ツリーを削除できます。これは、表が多用されているドキュメントにおいて特に効果的です。

PDFのJPEG圧縮には、どのような品質レベルを使用すればよいですか?

IronPDFは1%から100%のJPEG圧縮品質をサポートしています。推奨レベルは以下の通りです:高品質は90%以上、中品質は80%~90%、低品質は70%~80%です。最適な設定はファイルサイズとビジュアル品質の要求のバランスによって決まります。

たった1行のコードでPDFを圧縮できますか?

はい、IronPDFでは1行のコードでPDFの圧縮が可能です:PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); これにより、PDFを読み込み、画像を40%の品質で圧縮し、結果を保存します。

圧縮はHTMLから作成されたPDFでも機能しますか?

はい、IronPDFの圧縮機能は、既存のPDFファイルだけでなく、HTML文字列からPDFへの変換、URLからPDFへの変換、HTMLファイル変換を含む様々な方法で作成されたPDFでもシームレスに動作します。

PDF圧縮のメリットを最も享受できるのはどのようなコンテンツですか?

通常、画像はPDFファイルサイズの大部分を占めるため、画像を多用する文書は圧縮の理想的な候補となります。さらに、複雑な表構造のPDFはIronPDFの構造ツリー圧縮機能の恩恵を受けます。

PDFをディスクに保存せずに圧縮することはできますか?

はい、IronPDFには、圧縮されたPDFをそれぞれバイト配列またはStreamとして返すCompressPdfToBytesメソッドCompressPdfToStreamメソッドが用意されています。どちらも、Automatic、FastMemory、またはHighQualityの圧縮オプションを指定できるオプションのCompressionModeパラメータを受け付けます。

C#以外の言語でもPDF圧縮機能は利用できますか?

はい、CompressPdfToBytes および CompressPdfToStream 、Java、Node.js、Python を含むすべての IronPDF プラットフォームで利用可能になりました。

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

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

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

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 18,560,885 | バージョン: 2026.4 リリース
Still Scrolling Icon

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

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