スマホでスキャンした契約書を相手に送る
スキャンアプリが書き出した 20 ページの契約書が 40 MB あり、メール添付の上限を超えています。バランスで圧縮すると約 5〜6 MB になり、画面で読む限り違いは分かりません。相手が印刷するなら、印刷段階の約 12 MB でもほとんどのメールの上限内です。
Guide
PDF を圧縮は、ファイルの各ページをブラウザ内でビットマップに描画し、選んだ解像度で JPEG に再エンコードして、その JPEG をページサイズの変わらない新しい PDF に組み直します。ファイルはアップロードされず、結果は多くの場合で元ファイルの数分の一から数十分の一になります。
更新日 2026-09-094 sources11 min read
PDF を圧縮は、ファイルの各ページをブラウザ内でビットマップに描画し、選んだ解像度で JPEG に再エンコードして、その JPEG をページサイズの変わらない新しい PDF に組み直します。ファイルはアップロードされず、結果は多くの場合で元ファイルの数分の一から数十分の一になります。
最も向いているのはスキャン文書と画像中心のファイルです。スマホのスキャンアプリが作った PDF、コピー機が直接出力した契約書、カメラで撮ったレシート。こうしたファイルは 1 ページがもともと 1 枚の大きな画像なので、妥当な解像度と品質でエンコードし直すと容量が 70% 以上減ることが多く、画面ではほとんど違いが分かりません。
向いていないのは、文字が中心で元々容量が小さいファイルです。全ページの画像化は、数 KB だったベクター文字を 100〜200 KB の画像に変えるため、ファイルは小さくなるどころか「選択できる・検索できる・コピーできる」という性質まで失います。ツールパネルの黄色い注意書きはこの点を指しており、本記事の仕組みの節で理由を説明します。
3 つの段階は 3 組の固定パラメータに対応します。画面(72 DPI、JPEG 品質 0.55)、バランス(110 DPI、0.70、既定)、印刷(150 DPI、0.82)。圧縮の前にファイルの行き先を決める——WeChat で送るなら画面、保管して印刷もするならバランスか印刷——ほうが、後から何度も試すより速く終わります。
scan_圧縮_87%削減.pdf。出力が元ファイルより大きい場合は名前に「削減」が付きません。これは、このファイルが画像化による圧縮に向かないという合図です。結果カードから「もう一度ダウンロード」または「ワークスペースに追加して続ける」を選べます。6 ページのスキャン文書。各ページは 2480×3508 ピクセル(A4 用紙の 300 DPI 相当)の JPEG で、元ファイルは 2.41 MB。3 つの段階の実際の結果:
段階 描画解像度 1 ページの画素数 1 ページの JPEG 6 ページ合計 削減
画面 72 DPI · 品質 0.55 595×841 約 20 KB 120 KB 95%
バランス 110 DPI · 品質 0.70 909×1286 約 51 KB 302 KB 87%
印刷 150 DPI · 品質 0.82 1240×1753 約 109 KB 642 KB 73%
比較として、ベクター文字だけの 12 ページの契約書(11.7 KB)をバランスで圧縮すると 1.65 MB になります。1 ページごとに約 137 KB の画像になり、文字も選択できなくなります。

PDF 自体がすでに圧縮形式です。文字はフォントの輪郭で記述され、画像の中身は通常すでに JPEG か Flate で圧縮されています。いわゆる「PDF 圧縮」はツールによって 3 種類のまったく別の処理を指します。
本ツールは 3 番目です。これを理解すると、どのファイルで効き、どのファイルで逆効果になるかを予測できます。
PDF のページサイズは**ポイント(pt)**で測り、1 pt = 1/72 インチ、A4 は 595.28 × 841.89 pt です。描画時にツールは pdf.js でページをキャンバスに描き、倍率は DPI ÷ 72 です。
この段階は再サンプリングです。元のスキャンが 300 DPI なら、110 DPI で出力すると約 87% のピクセルを捨てることになります((110/300)² ≈ 0.13)。ピクセルが減れば JPEG 符号化前のデータも減り、これが容量低下の第一の源で、しかも取り消せません。
描画時には、ページ上のすべての要素——文字、ベクター図形、画像、注釈の見た目——が同じビットマップへ合成され、背景は白で塗られます(JPEG は透過に対応していません)。
ビットマップは続いてブラウザの JPEG エンコーダーで符号化され、品質パラメータ(0–1)はキャンバスの toBlob() から来ます。JPEG は画像を 8×8 のブロックに切り、離散コサイン変換のあと量子化テーブルに従って高周波の細部を捨てます。品質が低いほど量子化の刻みが大きくなり、残る高周波が減ってファイルは小さくなり、輪郭の近くの「リンギング」やブロック状のノイズが目立ちます。
3 つの段階の品質値 0.55 / 0.70 / 0.82 は「スキャンした文字がまだ読める」ように調整したものです。0.5 を下回ると画線の輪郭に目立つノイズが出て、0.85 を超えると容量は急速に増えるのに目で見た改善はわずかです。符号化の細部(色差サブサンプリングを行うか、どの量子化テーブルを使うか)はブラウザが決めるため、同じ段階でもブラウザによって出力容量が 1〜2 割違うことがあります。
PDF における 1 ページのベクター文字のコストは、フォントの一度きりの埋め込み(数十 KB、文書全体で共有)と、1 文字あたり数バイトの配置命令です。A4 のびっしり詰まった文字ページでも 2〜5 KB しかないことがあります。
同じページを画像化すると、110 DPI で 117 万画素になります。文字の輪郭は JPEG が最も苦手とする高周波の内容で、品質 0.7 でも白黒の輪郭をまともに符号化するには 100〜150 KB 必要です。その結果、12 ページの契約書は 11.7 KB から 1.65 MB へ、100 倍以上に膨らみます。これは不具合ではなく、画像化という方式に固有の性質です。元ファイルの各ページがもともとそれ以上に大きな画像であるときにだけ、効果があります。
出力はまったく新しい PDF です。各ページは元のページと同じ見た目の寸法を持つ空ページで、その上にページ全体を覆う JPEG(PDF では DCTDecode フィルターの画像オブジェクト)が載ります。元ファイルのフォント、ベクター、テキスト層、しおり、フォーム、リンク、メタデータは新しいファイルに入りません。ワークスペースで挿入した白紙ページはベクターの空ページのまま残り、画像化されません。スキャン文書にもともとある白紙ページは、ほかのページと同じように画像へ描画されます。
新しいファイルは純粋な画像なので、どんな PDF ビューアーでも開けて互換性は非常に高い一方、「検索」は何も見つからず、スクリーンリーダーも文字を読み上げられません。
スキャンアプリが書き出した 20 ページの契約書が 40 MB あり、メール添付の上限を超えています。バランスで圧縮すると約 5〜6 MB になり、画面で読む限り違いは分かりません。相手が印刷するなら、印刷段階の約 12 MB でもほとんどのメールの上限内です。
何十枚もの領収書を撮影して作った PDF は、保管と確認のためだけに残します。画面段階なら容量を元のおおよそ 5% まで減らせ、文字はまだ判別できます。
オンライン申請のシステムが 1 つの添付を 5 MB 以下に制限しているのに、学歴証明のスキャンが 18 MB あります。バランスを選び、それでも超えるなら画面を試します。最後にファイル名の削減率を確認してください。
先生がスキャンした資料をクラスのグループへ送り、学生はほとんどスマホで見ます。画面段階なら読み込みが速く通信量も抑えられ、印刷が必要な学生は元ファイルを別途受け取ります。
元のファイルがベクター文字中心で、もともと小さかったからです。画像化は各ページを 100〜200 KB の画像に変えます。こうしたファイルに圧縮は不要です。どうしても容量を減らしたいなら、原因は多くの場合いくつかの埋め込み画像なので、「PDF から画像を抽出」で確認してください。
まず行き先を考えます。画面で見るだけなら画面段階、迷ったらバランス、印刷するかもしれないなら印刷段階です。3 つの容量はおおよそ 1 : 2.5 : 5 で、鮮明さはそれに応じて上がります。
変わりません。新しいファイルの各ページの寸法は、ワークスペースで行った回転も含めて元のページと完全に同じで、中身だけが画像になります。
現在、圧縮は選択中のファイルの全ページに作用します。先に「PDF を分割」で圧縮したい部分を切り出し、圧縮後に「PDF を結合」で戻してください。
直接は戻せません。画像化は取り消せません。文字が必要なら圧縮したファイルに OCR をかけるしかなく、認識精度は段階によります。画面段階の 72 DPI は OCR には通常低すぎます。
各ページを大きなビットマップへ描画してから符号化するため、ページ数が多く元ファイルの解像度が高いと時間がかかります。スマホでは特にそうです。「PDF を分割」で分けて処理するか、デスクトップのブラウザへ切り替えてください。
圧縮の各工程——pdf.js によるページの描画、キャンバスによる JPEG の符号化、pdf-lib によるファイルの再構築——はすべてお使いのブラウザ内で行われ、ファイルがサーバーへアップロードされることはありません。途中で生成されるビットマップはメモリ上にだけ存在し、ページを閉じると解放されます。オフラインでも同じように使えます。
HTMLCanvasElement.toBlob()——quality パラメータの定義と値の範囲: https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasElement/toBlob(访问日期:2026-09-08)getViewport({ scale }) の意味(scale = 1 が 72 DPI に対応): https://mozilla.github.io/pdf.js/(访问日期:2026-09-08)更新日 2026-09-09
画像を再エンコードして容量を削減。画面・バランス・印刷の 3 段階
すべての処理はブラウザーのローカルで完結し、ファイルはサーバーに送信されません