IRONSOFTWAREHOME

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

Curtis Chau
Curtis Chau
Updated: 2026年5月9日

大きなPDFファイルは、ファイル転送を遅くし、ストレージコストを増大させ、ドキュメントが多いアプリケーションでのパフォーマンスを低下させます。 IronPDF for Node.jsは、内蔵画像の品質を低下させ、必要に応じてドキュメント内の表示寸法に画像をリスケールするcompressSizeメソッドを提供します。これにより、ドキュメント構造を変更せずにファイルサイズを50%以上削減することができます。

クイックスタート: Node.jsでPDFを圧縮する

パッケージをインストールし、PDFを読み込み、compressSizeを品質値1から100の間で呼び出します。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/quickstart.js
import { PdfDocument } from "@ironsoftware/IronPDF";

// 既存のPDFを読み込む
const pdf = await PdfDocument.fromFile("report.pdf");

// 埋め込まれた画像を60%のJPEG品質で圧縮する
await pdf.compressSize(60);

// 結果を保存する
await pdf.saveAs("report-compressed.pdf");
Text

なぜNode.jsアプリケーションにとってPDFファイルサイズが重要なのですか?

PDFサイズは、配信速度とストレージコストに直接影響します。APIエンドポイント経由で送信される20MBのレポートPDFは、モバイル接続で顕著な遅延を追加します。 毎日数千の文書を処理するバッチ処理パイプラインでは、30%のサイズ削減だけでも大幅なストレージ節約に繋がります。

IronPDFのcompressSizeメソッドは、大きなPDFファイルの主要な原因である埋め込み画像を対象としています。 レンダリング中、PDFオブジェクトレベルでテキストとベクトルグラフィックスは十分圧縮されますが、元の解像度で埋め込まれたラスター画像は、一般的なビジネス文書での過剰な重みのほとんどを占めます。 デフォルトから(通常は95-100%)JPEG品質を60-85%に下げることで、最も目に見える品質損失なしに最大のサイズ削減が得られます。

ヒント: 品質値が80以上の場合、通常の画面解像度で元のものと見分けが付きません。 60未満の値は、ファイルサイズが主な制約となるアーカイブまたはプレビュー用途に予約してください。

compressSizeメソッドはどのように機能しますか?

compressSizeメソッドは、2つのパラメーターを受け取ります: scaleImages(オプション、ブール値)。 falseの場合、このメソッドは各埋め込みJPEGをターゲット品質で再エンコードします。 trueである場合、PDFレイアウト内で表示されるサイズに一致するように画像がダウンサンプリングされ、小さなスケールでレンダリングされる画像の解像度が低下します。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-with-scaling.js
import { PdfDocument } from "@ironsoftware/IronPDF";

// ソース文書を読み込む
const pdf = await PdfDocument.fromFile("product-catalog.pdf");

// 画像を90%の品質に圧縮し、可視サイズにスケールダウンする
await pdf.compressSize(90, true);

// 最適化された文書を保存する
await pdf.saveAs("product-catalog-optimized.pdf");
Text

scaleImages引数は、高DPIスキャンや表示サイズに関係なく画像をフル解像度で埋め込むHTMLテンプレートから生成されたPDFに特に効果的です。これを有効にすることで、通常の印刷や画面解像度で視覚的な劣化を伴わずに、ファイルサイズを品質の調整のみよりも縮小することができます。

このメソッドは、そのままPdfDocumentオブジェクトを修正します。 元のファイルを保持する必要がある場合、compressSizeを呼び出す前にドキュメントをクローンするか、別の保存パスを使用してください。

どの品質設定を使用するべきですか?

適切な品質値は、圧縮後にPDFがどのように使用されるかに依存します:

  • 90-100: ほぼ非圧縮。 ドキュメントをフルズームで印刷または表示する場合に使用します。
  • 80-89: 高品質で明らかに小さいファイル。ほとんどのビジネス文書のデフォルトの出発点。
  • 60-79: 中品質。 画面表示、ウェブ配信、メール添付に適しています。
  • 60未満: 低品質。 プレビュのサムネイル、アーカイブコピー、またはファイルサイズが重要なケースに適しています。
ご注意: 品質スケールは特にJPEG画像の再エンコードに適用されます。 PDF内のテキスト、ベクトルグラフィックス、非JPEG画像には品質設定が影響しません。

Node.jsで圧縮結果を測定するにはどうすればよいですか?

圧縮が期待される削減を達成したか確認するのは、Node.js fsモジュールを使用することで簡単です。 compressSizeを呼び出す前後でファイルサイズを読み取り、その結果がアプリケーションの要件を満たすことを確認するために比率を計算します。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/measure-compression.js
import { PdfDocument } from "@ironsoftware/IronPDF";
import { statSync } from "fs";

const inputPath = "annual-report.PDF";
const outputPath = "annual-report-compressed.PDF";

const beforeBytes = statSync(inputPath).size;

const pdf = await PdfDocument.fromFile(inputPath);
await pdf.compressSize(75);
await pdf.saveAs(outputPath);

const afterBytes = statSync(outputPath).size;
const reduction = (((beforeBytes - afterBytes) / beforeBytes) * 100).toFixed(1);

console.log(`Before: ${(beforeBytes / 1024).toFixed(1)} KB`);
console.log(`After:  ${(afterBytes / 1024).toFixed(1)} KB`);
console.log(`Reduced by ${reduction}%`);
Text

Node.js fs.statSync APIはバイト数でStatsオブジェクトを返します。 本番用パイプラインでは、この比率を文書ごとに記録し、圧縮が期待どおりにサイズを減少させなかった例外(通常はソースで既に圧縮されたスキャンされた文書)を特定できるようにします。

サーバー環境でファイルを処理する前に、IronPdfGlobalConfigを構成してください。 エンジン設定の詳細については、IronPDF Node.js ドキュメントを参照してください。)}]

バッチで複数のPDFを圧縮するにはどうすればよいですか?

本番アプリケーションは、通常、単一のドキュメントを孤立して圧縮することはありません。 以下の例は、compressSize操作をブロックせずにNode.jsイベントループが処理できるよう、ファイルパスの配列を同時に処理します。

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/batch-compress.js
import { PdfDocument } from "@ironsoftware/IronPDF";
import path from "path";

async function compressPdfFiles(inputPaths, quality = 80) {
    const results = await Promise.all(
        inputPaths.map(async (inputPath) => {
            const pdf = await PdfDocument.fromFile(inputPath);
await pdf.compressSize(quality);

            const outputPath = inputPath.replace(".pdf", "-compressed.pdf");
await pdf.saveAs(outputPath);

            return { input: inputPath, output: outputPath };
})
);

return results;
}

// 使用法
const files = ["report-q1.pdf", "report-q2.pdf", "report-q3.pdf"];
const compressed = await compressPdfFiles(files, 75);
compressed.forEach(r => console.log(`Saved: ${r.output}`));
Text

compressSizeの各呼び出しは独立しており、並列化するのに安全です。非常に大規模なバッチ(数百のファイル)の場合、Node.jsのメモリ制限を超えないように配列をチャンク化することを考慮してください。 Node.jsのイベントループに関するドキュメントは、Promise.allがどのようにして主スレッドをブロックせずに同時I/Oをスケジュールするかを説明しています。

圧縮を他のPDF操作とどのように組み合わせますか?

圧縮は、より大きなドキュメント処理チェーンに自然に組み込まれます。 一般的なパターンは、HTMLからPDFを生成し、透かしや署名を追加し、配布前に圧縮することです:

//:path=/static-assets/pdf/content-code-examples/how-to/nodejs-compress-pdf/compress-after-render.js
import { PdfDocument, ChromePdfRenderer } from "@ironsoftware/IronPDF";

// HTMLをPDFにレンダリング
const renderer = new ChromePdfRenderer();
const pdf = await renderer.renderHtmlAsPDF("<h1>Invoice #1042</h1><p>Amount due: $540.00</p>");

// 保存前に圧縮する -- Chromeでレンダリングされたコンテンツから画像の重さを削減
await pdf.compressSize(85);

// 最終文書を保存する
await pdf.saveAs("invoice-1042.pdf");
Text

ChromePdfRendererは、背景画像やCSS参照のアセットを完全解像度で埋め込むことが多いです。 レンダリング後にcompressSizeを呼び出すことで、HTML由来のPDFのファイルサイズを一貫して削減します。 IronPDF HTML to PDF チュートリアル では、レンダラーの設定を詳細に説明しています。

また、デジタル署名が必要な文書については、圧縮後に署名を適用してください。 署名は文書のバイトストリームをロックし、さらに変更すると署名が無効になります。

複数ページのドキュメントを扱う場合、圧縮前にPdfDocument.merge()でマージします。 マージした結果を圧縮する方が、個別のファイルを圧縮してから再度マージするよりも効率的です。

ヒント: 圧縮前に複数ページの文書をマージします。 マージした結果を圧縮する方が、個別のファイルを圧縮してから再度マージするよりも効率的です。

Node.jsでのPDF圧縮の次のステップは何ですか?

compressSizeメソッドは、埋め込まれた画像の重さを減らす最も一般的な圧縮の使い方をカバーしています。 特殊なシナリオに対しては、IronPDF PDF圧縮の例で、追加の動作コードサンプルを提供しており、APIリファレンスでは利用可能なすべてのメソッドシグネチャを文書化しています。

IronPDFはさらに、画像をPDFに変換するPDFテキストを読み取るPDFからページを削除するのサポートがあります。これらすべての操作は同じPdfDocument APIと統合されています。 Node.jsでのPDF機能の完全な概要については、IronPDF Node.js ドキュメントをご覧ください。

プロジェクトで圧縮をテストする準備はできましたか? 無料トライアルを開始して、上記の例を透かしなしで実行するか、ライセンスオプションを表示して本番展開について確認してください。

PdfDocument

よくある質問

Node.jsでIronPDFを使用してPDFを圧縮する方法は?

PdfDocument.fromFile(path)を使用してPDFをロードし、品質値1から100の間でawait pdf.compressSize(quality)を呼び出し、await pdf.saveAs(outputPath)で結果を保存します。最初にnpm install @ironsoftware/ironpdfを使用してパッケージをインストールします。

compressSizeの品質パラメーターは何を制御しますか?

品質パラメーター(整数1-100)は、埋め込まれたラスター画像のJPEG再エンコードレベルを制御します。80-89の値は、高品質でサイズが目立って小さくなる出力を生成し、ほとんどのビジネス文書の推奨開始点です。60未満の値は、ファイルサイズが主な制約となるアーカイブまたはプレビュー用途に適しています。

compressSizeのscaleImagesパラメーターとは?

オプションである2番目のパラメーターscaleImages(boolean、デフォルトfalse)は、PDFレイアウトにおける埋め込まれた画像をその可視サイズにダウンサンプルします。これをtrueに設定すると、フル解像度で画像を埋め込む高DPIスキャンまたはHTMLテンプレートから生成されたPDFに効果的です。

compressSizeを使用した場合、PDFファイルサイズはどれくらい削減可能ですか?

削減はソースPDFのコンテンツによります。多くの高解像度ラスター画像を含むドキュメントは50%以上の削減が見込めます。主にテキストおよびベクターグラフィックスを含むPDFは最小限の削減となります。compressSizeはJPEG画像再エンコードを対象にしているためです。

Node.jsで圧縮結果を測定するにはどうすればいいですか?

圧縮前と後のバイト単位のファイルサイズを読み取るにはfs.statSync(path).sizeを使用します。比率を((before - after) / before) * 100として計算し、削減率を取得します。

Curtis Chau
テクニカルライター

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

...
詳しく読む

準備はできましたか?

バージョン:2026.6リリースされたばかり

あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
Node.js モジュールダウンロード for PDF
npmでインストール

バージョン: 2026.6

  1. ダウンロードしてNode.js 12+をインストール。
  2. 上記のコマンドをターミナルで実行します。

ライセンスは$999から

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。