How-to2026-10-03約2分で読めます

PDF を JPG や PNG に変換する:DPI で何が変わるか、1 ページだけ書き出すには

「PDFから画像」は全ページを ZIP にレンダリングし、JPEG を選ばなければ PNG になる。ブラウザのフォームにあるのは形式と DPI だけで、ページ指定と WebP の API フィールドは無視される。150 と 300 DPI での実測ファイルサイズと、1 ページだけ書き出す方法。

PDF123 · Updated 2026-10-03

PDFから画像は、PDF の全ページをそれぞれ 1 つの画像ファイルにして、ZIP で返す。ブラウザのフォームにある設定は形式(PNG か JPEG)と DPI の 2 つで、ページを選ぶことも WebP を選ぶこともできない。どちらの設定も出力サイズを大きく変える。以下の節で、どれくらい変わるかを示す。

実例:6 ページ、4 つの設定

テストファイルは Ghostscript で生成した 6 ページ、US レター、テキストのみの文書だ。1 ページあたり 11 pt の Times で 32 行、5,593 バイト。これをローカルビルドのサーバーの /api/v1/convert/pdf/img エンドポイントに、設定ごとに 1 回ずつ送った。数値は 2026-10-04 の 1 回の実行によるもので、別の文書ではサイズが変わる。

DPI 形式 1 ページのピクセル数 1 ページ目 ZIP、全 6 ページ
150 PNG 1275 x 1650 53,400 バイト 195,476 バイト
300 PNG 2550 x 3300 127,391 バイト 494,897 バイト
150 JPEG 1275 x 1650 252,280 バイト 1,340,684 バイト
300 JPEG 2550 x 3300 685,891 バイト 3,272,299 バイト

ピクセル寸法はページサイズから決まる。レターのページは 8.5 × 11 インチなので、150 DPI なら 1275 × 1650、300 DPI なら 2550 × 3300 だ。DPI を 2 倍にするとピクセル数は 4 倍になるが、ここでは PNG の ZIP は約 2.5 倍にしかならなかった。均一な白い領域はよく圧縮されるからだ。

このファイルでは JPEG のほうが PNG より大きかった。150 DPI で 1 ページ目のサイズは約 4.7 倍だった。JPEG は小さい形式だという通説が当てはまるのは写真だ。テキストのページはほとんどが均一な白と鋭いエッジで、PNG はこれをよく圧縮するが JPEG は圧縮しない。写真やスキャンのページでは逆になることもある。100 ページを変換する前に、代表的な 1 ページで試すこと。

ZIP は PDF の名前が付く(contract.pdf なら contract.zip)。中身は page.1.png から page.6.png で、JPEG を選んだ場合は .jpg ファイルになる。

API は受け付けるが無視するオプション

ブラウザのフォームにはこの 2 つはないが、スクリプトで送ってもエラーにならず、効果もない。

  • ページ指定。 pageNumbers=2 を送ると、1 ページではなく 6 ページすべてが返った。常に全ページがレンダリングされる。
  • WebP。 imageFormat=webp は、png と同じ名前とサイズの PNG ファイルを返した。JPEG を選ぶのは jpeg と jpg だけで、ほかの値は PNG にフォールバックする。

WebP が必要なら、後から画像エディタで PNG を変換する。

1 ページだけ取り出す

先にそのページを切り出し、1 ページの PDF を変換する。

  1. ページの抽出を開き、PDF をアップロードして、残すページとして 2 を入力する。テストでは、結果は 1 ページの PDF だった。
  2. その PDF をPDFから画像にアップロードし、DPI を 150 にして PNG のままにする。ZIP には page.1.png の 1 ファイルが入っていた。

元の 2 ページ目から作ったのに、ファイル名は page.1.png になる。抽出した PDF では番号が振り直されるからだ。元のページ番号が重要なら、名前を変えること。

DPI:フォームと API で食い違う点

Web フォームには 300 が初期入力されている。dpi を省略して API を直接呼ぶと、150 でレンダリングされる。スクリプトの出力画像がブラウザより小さいなら、これが理由だ。どちらでも dpi を明示して送ること。数値でない値は 400 で拒否され、メッセージは「dpi must be a number」となる。

目安は上の表に基づくもので、画質のベンチマークに基づくものではない。150 DPI は画面でページ全体を読むには十分で、300 DPI は印刷や、細かい文字を拡大して見る用途向けだ。この実行では、300 DPI の PNG の ZIP は 150 DPI のものの約 2.5 倍で、スキャン中心の長い文書ではそれがさらに積み重なる。

残らないもの

結果はピクセルなので、次のようになる。

  • テキストは選択も検索もできなくなる。テキストが必要ならPDFからテキスト、スキャンなら OCR を使う。
  • リンクは機能しなくなる。
  • ベクターのロゴや図は、選んだ DPI でラスタライズされ、後で拡大するとぼける。もっと高い DPI でやり直すこと。

元の PDF は画像と一緒に取っておく。画像からPDFで戻しても、元の文書ではなく、文字の写真でできた PDF になる。

パスワードで保護された PDF は、400 の This PDF is password-protected. Enter its password. で拒否され、このエンドポイントに password フィールドを送っても変わらない。先にパスワード解除でパスワードを外す。

一括で使う前に確認する

ZIP から 1 ページを取り出し、100% の倍率で小さな文字と細い線を確認する。ぼやけていたら DPI を上げてやり直す。ZIP が大きすぎるなら DPI を下げるか、手元のページで実際に小さくなると確認してから JPEG に切り替える。

Open tool
Process in the browser — no watermark, files removed after the job.
Open tool