結論

PDFを画像にするいちばん早い方法は、1ページだけならスクリーンショットかMacのプレビューの「書き出す」、全ページならコマンド1行の pdftoppm -jpeg -r 150 入力.pdf 出力名 です。画面用は150dpiのJPG、文字をくっきり残すならPNG、印刷用は300dpiが目安です。機密の書類はオンライン変換に上げず、手元で変換します。

この記事でわかること

  • Windows・Mac・スマホ・コマンド・Pythonでの変換手順(目的別の早見表つき)
  • 同じPDFを72〜600dpi・6ツールで変換した画質・容量・時間の実測
  • 文字化け・真っ黒・巨大な画像・パスワード付きPDFのエラー原文と直し方

2026年10月29日更新|poppler 24.02・Ghostscript 10.02・ImageMagick 6.9・PyMuPDF 2.0で実行確認

PDFを画像にする方法は、「何ページを」「どこで」「どんな画質で」変換するかで決まります。迷ったときは次の順で選びます。

flowchart TD
    A{全ページ?} -->|1枚だけ| B[スクショ<br>プレビュー]
    A -->|全部| C{機密?}
    C -->|なし| D[オンライン可]
    C -->|あり| E{コマンド可?}
    E -->|可| F[pdftoppm]
    E -->|不可| G[Acrobat<br>プレビュー]

やりたいことごとに、いちばん早い方法を先にまとめます。

やりたいこと いちばん早い方法 詳しい節
とにかく1枚だけ画像にしたい Windows は Windows+Shift+S、Mac はプレビューの「ファイル」→「書き出す」 Windows/Mac の節
PDFをJPGに変換(全ページ) pdftoppm -jpeg -r 150 in.pdf page コマンド1行で変換する
PDFをPNGに変換(文字をくっきり) pdftoppm -png -r 150 in.pdf page JPGとPNGどちらに変換するか
印刷用に高画質で -r 300 にする(A4で2480×3509px) 解像度ごとの実測
SNS・ブログ用に軽く -jpeg -scale-to-x 1080 -scale-to-y -1 サイズ指定・切り抜き
1ページだけ・範囲だけ -f 3 -l 3 -singlefile 全ページ一括・1ページだけ
大量のPDFをまとめて for で回すか xargs -P 2 で並列 Pythonで変換と一括変換
背景を透明にしたい pdftocairo -png -transp 透過PNG
機密の書類を変換したい オンラインに上げず、手元のアプリかコマンドで スマホ・オンライン変換と注意

確認環境:Ubuntu 24.04.5 LTS(2CPU・メモリ8GB、ほかの作業と共有)の上で、自作の見本PDF(A4・3ページ。1ページ目は日本語の文字を12・10・8・6pt、2ページ目はベクターの棒グラフと0.25〜2ptの線、3ページ目は1200×900pxの写真風の画像。フォントはIPAゴシックを埋め込み)を作り、poppler-utils 24.02.0(pdftoppm・pdftocairo・pdfimages。PNGの数値は Ubuntu の /usr/bin のものをそのまま実行)、Ghostscript 10.02.1(apt-get download した .deb を作業場所に展開。日本語の CMap は poppler-data 0.4.12 を同じく展開)、ImageMagick 6.9.12-98、Python 3.13.18 の venv に入れた PyMuPDF 2.0(MuPDF 1.28.5)・pdf2image 1.17.0・Pillow 13.0.0 で、72・150・300・600dpi の JPG と PNG に変換しました。時間は同じコマンドを3回実行した最小値です(共有のマシンのため、数十%ほど揺れます)。パスワード付きPDFは qpdf 11.9.0 で自分で暗号化したもの、画像からPDFへの変換は img2pdf 0.6.3 で確かめました。Windows・Mac・iPhone・Android・Adobe Acrobat は手元で動かせないため、Microsoft・Apple・Google・Adobe の公式ページの記載の範囲だけを書いています。オンライン変換サービスには接続もアップロードもしていません。図は mermaid で描画を確かめています(確認日 2026年10月29日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「PDFを画像に変換する方法|JPG・PNGの手順とdpi別の画質・容量を実測」

PDFを画像に変換する方法の選び方(目的別)

この節では、PDFを画像(JPG・PNG)に変換する方法の全体像と、目的ごとにどれを選べばよいかが分かります。

PDFを画像にする方法は、大きく「画面を撮る」「アプリで書き出す」「オンラインで変換する」「コマンドやプログラムで変換する」の4種類です。1枚だけなら画面を撮るのが早く、全ページを決まった画質でそろえるならアプリかコマンドが確実です。

1

画面を撮る

スクリーンショット。どの端末でも使えるが、画質は画面の表示の大きさで決まる。

1ページだけ・急ぎ

2

アプリで書き出す

Mac のプレビュー、Adobe Acrobat Pro。形式と画質を選んで保存できる。

数ページ・画質を選びたい

3

オンラインで変換

ブラウザでアップロードして変換。インストール不要でスマホからも使える。

機密でない書類だけ

4

コマンド・Python

pdftoppm・Ghostscript・PyMuPDF など。dpi・形式・ページを細かく決められ、大量でも速い。

全ページ・大量・手元で

目的ごとの設定は次の判断表のとおりです。dpi(dots per inch)は「1インチを何個の点で描くか」で、数字が大きいほど細かく、ファイルも大きくなります。A4の紙は 8.27×11.69インチなので、150dpiなら約1240×1754px、300dpiなら約2480×3508pxになります。

目的 形式 解像度の目安 この環境での大きさ(A4・1ページ)
とにかく1枚(メール・チャットに貼る) JPG か PNG 150dpi か画面のスクリーンショット JPG 71〜180KB
資料・スライドに貼る(文字が多い) PNG 150〜200dpi 文字のページで PNG 90KB
印刷用 PNG(写真が主なら高画質のJPG) 300dpi PNG 84KB〜4.8MB
SNS・ブログ用 JPG 幅を1080px などに指定 写真のページで JPG 130KB
大量のPDFをまとめて JPG 150dpi 3ページ 333KB・0.27秒
背景を透明にしてほかの画像に重ねる PNG(透過) 用途に合わせる 透明な点が全体の85%
PDFに入っている写真だけ欲しい 元の形式のまま 変換せず取り出す 元の1200×900px のまま

どの方法でも、変換後の画像は「文字を選んでコピー・検索できない」ことに注意します。文字を残したいならPDFのまま渡すか、文字を抜き出す方法を使います。PDFやWord・Excelの中身をテキスト(Markdown)として取り出す方法は別の記事で扱う題材です。

コマンド1行でPDFをJPG・PNGに変換する(pdftoppm)

この節では、いちばん早く全ページを変換できる pdftoppm のインストールと、そのまま使えるコマンドが分かります。

pdftoppm は、PDFを表示するためのライブラリ Poppler に付いてくる変換コマンドです。Linux では多くのディストリビューションが最初から入れており、無ければ poppler-utils を入れます。Mac は Homebrew の brew install poppler、Windows は Poppler の Windows 向けビルドを入れて bin フォルダーを PATH に足す方法が、pdf2image の公式 README で案内されています。

# Ubuntu・Debian
sudo apt install poppler-utils
# Mac(Homebrew)
brew install poppler

# 全ページを150dpiのJPGに(page-1.jpg, page-2.jpg ... ができる)
pdftoppm -jpeg -r 150 input.pdf page

# 全ページをPNGに
pdftoppm -png -r 150 input.pdf page

# 3ページ目だけを1枚、番号なしの名前で
pdftoppm -png -r 150 -f 3 -l 3 -singlefile input.pdf cover

見本PDF(3ページ)で実行した結果です。何も表示されずに終わり、ページごとのファイルができます。

$ pdftoppm -jpeg -r 150 sample.pdf x
$ ls -l
-rw-r--r-- 1 root root  83588 x-1.jpg
-rw-r--r-- 1 root root  73202 x-2.jpg
-rw-r--r-- 1 root root 184674 x-3.jpg
$ identify x-1.jpg
x-1.jpg JPEG 1240x1755 1240x1755+0+0 8-bit sRGB 83588B

よく使うオプションは次のとおりです(pdftoppm -h の一覧から抜き出しました)。

オプション 意味 メモ
-jpeg/-png/-tiff 出力の形式 何も付けないと PPM 形式(.ppm)になる
-r 数字 解像度(dpi) 既定は150
-f/-l 最初と最後のページ -f 2 -l 5 で2〜5ページ
-singlefile 最初の1ページだけを番号なしで保存 表紙だけ欲しいとき
-jpegopt quality=90 JPGの画質(0〜100) 既定は75(実測で一致)
-scale-to-x/-scale-to-y 幅・高さをピクセルで指定 片方を -1 にすると縦横比を保つ
-x -y -W -H ページの一部だけを切り抜く ピクセルで指定
-upw 開くためのパスワード パスワードを知っているPDFだけ

何も形式を付けずに実行すると、ほとんどの画像ビューアーで開きにくい .ppm ができます。「変換したのに開けない」と感じたら、-jpeg か -png を付け忘れていないかを見ます。

0.27秒3ページを150dpiのJPGにpdftoppm・合計333KB
5.1MB300dpiのPNGにすると同じ3ページ・3.03秒
14.3MB600dpiのPNGにすると同じ3ページ・19.6秒

WindowsでPDFを画像に変換する方法

この節では、Windows で PDF を JPG・PNG にする方法を、標準の機能・有料ソフト・無料のツールの順に、公式ページの記載の範囲で整理します。

Windows には PDF をまとめて画像に変換する標準の機能はありません。1ページだけなら Snipping Tool で画面を撮り、全ページなら Adobe Acrobat Pro の書き出しか、無料のコマンドや Python を使います。

1ページだけ:Snipping Tool で画面を撮る

1

PDFを大きく表示する

Edge などでPDFを開き、変換したいページを画面いっぱいに拡大する。画像の細かさは、このときの表示の大きさで決まる。

小さく表示したまま撮ると文字がつぶれる

2

Windows ロゴ キー+Shift+S を押す

画像キャプチャ用のオーバーレイが開くので、ページの範囲を囲む。Print Screen キーは画面全体をクリップボードに入れる。

Microsoft サポートの記載

3

保存先を確かめる

撮った画像はスクリーンショット フォルダーに自動で保存される。「名前を付けて保存」で場所とファイル名を決めて別に保存することもできる。

自動保存の場所は Snipping Tool の設定で変えられる

全ページ:Adobe Acrobat Pro で書き出す

Adobe の説明では、Acrobat Pro で PDF を開き、右側の「PDFを書き出し」ツール、またはメニューの「ファイル」→「書き出し形式」→「画像」から JPEG などの形式を選び、「書き出し」で保存先を決めます。複数ページのPDFは、ページごとに別の画像ファイルになります。Adobe の案内は Acrobat Pro を前提にしており、無料の Acrobat Reader でこの書き出しができるとは書かれていません。

無料で全ページ:Python か Ghostscript を入れる

PyMuPDF は Windows(32ビット・64ビット)向けの wheel が配布されており、Python を入れてあれば pip install pymupdf だけで使えます。Ghostscript も Windows 向けのリリースが公式のダウンロードページにあり、AGPL と商用の2つのライセンスで提供されています。どちらもこの記事の後半のコマンド・コードがそのまま使えます(Windows ではコマンド名が gswin64c になります)。

Windows のコマンド操作に慣れていない場合は、関連記事「Python venvの使い方|作成・有効化コマンド早見表と有効化できない時の直し方」の手順で仮想環境を作ってから PyMuPDF を入れると、ほかの Python の環境を汚しません。

MacでPDFをJPG・PNGに変換する方法(プレビュー)

この節では、Mac に最初から入っている「プレビュー」で PDF を JPG・PNG に書き出す手順と、その限界が分かります。

Mac では、プレビューで PDF を開き「ファイル」→「書き出す」でフォーマットを JPEG か PNG にすれば画像になります。追加のアプリは要りません。

1

プレビューで PDF を開く

変換したい PDF をプレビューで開く。プレビューは Mac に最初から入っている。

プレビュー

2

「ファイル」→「書き出す」を選ぶ

メニューバーの「ファイル」から「書き出す」を選ぶ。

File > Export

3

フォーマットを JPEG か PNG にする

「フォーマット」のポップアップメニューで HEIC・JPEG・JPEG-2000・OpenEXR・PDF・PNG・TIFF から選ぶ。JPEG は画質を調整できる。一覧に無い形式は Option キーを押しながらメニューを開くと出る。

Apple の「Mac のプレビューで画像のファイルタイプを変換する」

4

名前と保存先を決めて「保存」

新しい名前を入力するか保存先を選び、「保存」をクリックする。

元の PDF はそのまま残る

Apple の公式ページには、PDF に複数のページがあるときの扱いと、解像度の決め方は書かれていません。全ページを決まった dpi でそろえたいときは、ターミナルで Homebrew の poppler を入れて pdftoppm を使う方法が確実です(前の節のコマンドがそのまま動きます)。

変換したあとの PNG・JPG をさらに WebP にしたり、iPhone の写真の HEIC を JPG にしたりする話は、関連記事「WebP・HEICとは|JPG・PNGへの変換と画像圧縮を実測で解説」で扱っています。

スマホ・オンライン変換でPDFを画像にする方法と注意

この節では、iPhone・Android で PDF を画像にする方法と、ブラウザのオンライン変換サービスを使うときに確かめたいことが分かります。

iPhone・Android:表示してスクリーンショット

スマホで1ページだけ画像にするなら、PDF を表示してスクリーンショットを撮るのが早道です。Apple の説明では、Face ID 搭載の iPhone はサイドボタンと音量を上げるボタンを同時に押してすぐ放し、ホームボタンのある機種はサイドボタン(またはトップボタン)とホームボタンを同時に押します。撮った画像は写真アプリの「コレクション」→「メディアタイプ」→「スクリーンショット」で見られます。Android は、Google の説明では電源ボタンと音量小ボタンを同時に押し、撮れないときは電源ボタンを数秒長押しして「スクリーンショット」をタップします。

スクリーンショットの細かさは端末の画面の解像度で決まり、A4 の細かい文字は読めなくなることがあります。拡大して何枚かに分けて撮るか、次のオンライン変換かパソコンでの変換に切り替えます。

オンライン変換:手順はどこもほぼ同じ

Adobe Acrobat オンラインの「PDF を JPG に変換」では、PDF を選ぶかドラッグ&ドロップし、形式(JPG・PNG・TIFF)を選んで「変換」を押し、できた画像をダウンロードします。Adobe の FAQ では、スマホでも同じ手順で変換できると説明されています。iLovePDF には、ページごとに JPG にする「ページから JPG」と、PDF に埋め込まれた画像だけを取り出す「画像抽出」の2つの方式と、「標準」「高」の画質の選択があります。

オンライン変換は、ファイルを変換サービスのサーバーへ送って処理します。Adobe の説明では、ログインして保存しない限り、アップロードしたファイルは処理後に削除されるとしています。それでも、社外秘や個人情報を含む書類は、送ってよいかを先に判断します。

  • 1機密・個人情報が入っていないか契約書・見積書・名簿・社内資料は、手元のアプリかコマンドで変換する
  • 2会社の規程で外部サービスへの送信が認められているか個人で使えるサービスでも、業務の書類は社内の決まりが優先
  • 3利用規約・プライバシーポリシーでファイルの扱いを読んだか保存期間・削除のタイミング・処理する国を見る
  • 4ダウンロードした ZIP とファイル名を確かめたか全ページは ZIP で届くことが多い。名前が長い英数字になるサービスもある

機密の書類を急いで画像にしたいとき

やってはいけない検索で最初に出たオンライン変換サイトに、契約書の PDF をそのままアップロードする
→
代わりにMac はプレビューの書き出し、Windows は Snipping Tool か手元の pdftoppm・PyMuPDF で変換する。ファイルは端末の外に出ない

見分ける問い:「この書類をメールで社外に送ってよいか」

解像度(dpi)ごとの画質・容量・時間の実測

この節では、同じ PDF を 72・150・300・600dpi で JPG と PNG に変換したときの、画素数・ファイルの大きさ・かかった時間が分かります。

dpi を2倍にすると画素数は4倍になり、PNG の容量は約3〜5倍、時間は約4〜6.5倍に増えました。pdftoppm で見本PDFの3ページ(文字・図・写真)を変換した結果です。

dpi 画素数(A4・1ページ) JPG 3ページの合計と時間 PNG 3ページの合計と時間 PNG の内訳(文字/図/写真)
72 595×842 78KB・0.09秒 381KB・0.22秒 35KB/13KB/333KB
150 1240×1755 333KB・0.27秒 1,819KB・0.83秒 90KB/33KB/1,696KB
300 2480×3509 1,051KB・0.80秒 5,219KB・3.03秒 191KB/84KB/4,944KB
600 4959×7017 3,312KB・4.16秒 14,655KB・19.58秒 427KB/218KB/14,010KB

1文字のページは PNG が軽い

150dpi の文字のページは PNG 90KB・JPG 82KB でほぼ同じ。図のページは PNG 33KB の方が JPG 71KB より軽かった。

2写真のページは PNG が重い

同じ150dpi で PNG 1,696KB・JPG 180KB。写真が入るページは JPG にすると約9分の1になった。

3600dpi は時間も重い

PNG の3ページで19.6秒・14.3MB。1ページの画素は約3,500万で、ふつうの用途には大きすぎる。

8pt の日本語の文字を切り抜き、4倍に拡大して並べると、次のように見えました(上から 72dpi の PNG・JPG、150dpi の PNG・JPG、300dpi の PNG・JPG)。

dpi 8pt の文字の見え方 向く用途
72 「画」「像」「換」の画数の多い字がつぶれて読めない。英数字はかろうじて読める サムネイル・一覧の小さな絵
150 全部の字が読める。拡大すると輪郭が少しぼける 画面で読む・資料に貼る・メール
300 拡大しても輪郭がなめらか 印刷・細かい図面・拡大して見る資料

どの dpi を選ぶかは、次の順で考えると迷いません。

  1. 1小さく表示するだけ → 72〜96dpi一覧のサムネイル。細かい文字は読めなくてよいとき
  2. 2画面で読む → 150dpipdftoppm の既定。8pt の文字まで読めた
  3. 3拡大して見る・細い線がある → 200dpipdf2image の既定は200
  4. 4印刷する → 300dpiA4 で 2480×3509px。印刷で一般的な目安
  5. 5特別な理由があるとき → 600dpi大判の図面の一部を拡大するなど。容量と時間は300dpiの約3〜6.5倍

なお、PDF に貼ってある写真は、元の画像の細かさ以上にはなりません。見本の写真は pdfimages -list で 175ppi と表示されたので、300dpi や600dpi で書き出しても写真の部分の情報は増えず、容量だけが増えます。

JPGとPNGどちらに変換するか(文字のにじみと容量)

この節では、PDF を JPG にするか PNG にするかの決め方と、JPG にしたときの文字のにじみ、画質(quality)の設定ごとの容量が分かります。

文字・表・図が中心のページは PNG、写真が中心のページは JPG が向きます。JPG は写真を軽くするのが得意ですが、文字のまわりに薄い汚れ(モスキートノイズ)が出ます。PNG は画質が落ちない形式で、文字はくっきり残りますが、写真のページは重くなります。

JPG(JPEG)が向く

写真・グラデーションが多いページ

SNS・メールで軽く送りたい

写真のページは PNG の約9分の1(150dpi)

PNG が向く

文字・表・グラフ・線画のページ

背景を透明にしたい

何度編集・保存しても画質が落ちない

同じページを PNG と JPG(pdftoppm の既定の画質)で変換し、PNG では真っ白だった点が JPG で灰色(明るさ245未満)に変わった割合を数えました。

dpi 白い背景が灰色に変わった点 明るさの最大のずれ(0〜255)
72 2,022個(白い部分の0.43%) 45
150 4,415個(0.22%) 51
300 12,329個(0.15%) 42

汚れは文字のすぐまわりに集まるので、割合は小さくても、拡大すると文字がにじんで見えます。dpi を上げると割合は下がりますが、ゼロにはなりません。

JPG の画質(quality)と容量

pdftoppm の JPG の既定の画質は75です(-jpegopt quality=75 を付けた出力とバイト単位で一致しました)。150dpi で画質を変え、PNG との差を PSNR(単位 dB。数字が大きいほど PNG に近い)で比べました。

quality 文字のページ 写真のページ 向く用途
50 69KB・39.2dB 103KB・32.8dB とにかく軽く
75(既定) 82KB・42.3dB 180KB・34.2dB 画面で見る・SNS
90 104KB・45.1dB 331KB・38.2dB 資料・写真をきれいに
95 125KB・45.9dB 458KB・41.4dB 印刷用の写真
# 画質90のJPGにする
pdftoppm -jpeg -jpegopt quality=90 -r 150 input.pdf page

「.jpg」と「.jpeg」は中身が同じ形式で、拡張子の綴りが違うだけです。pdftoppm は .jpg で保存します。

PDF画像変換ツール6種の比較(同じPDFで実測)

この節では、pdftoppm・pdftocairo・Ghostscript・ImageMagick・PyMuPDF・pdf2image で同じ PDF を変換したときの、時間・容量・既定の動きの違いが分かります。

速さだけなら Ghostscript、手軽さと素直な既定値なら pdftoppm、Python から使うなら PyMuPDF が向いていました。見本PDFの3ページをまとめて変換した合計です(時間は3回の最小値)。

ツール 150dpi PNG 150dpi JPG 300dpi PNG 300dpi JPG
pdftoppm 0.83秒・1,819KB 0.27秒・333KB 3.03秒・5,219KB 0.80秒・1,051KB
pdftocairo 0.84秒・1,639KB 0.45秒・296KB 3.08秒・5,221KB 0.40秒・1,048KB
Ghostscript 0.29秒・1,789KB 0.12秒・357KB 1.12秒・3,068KB 0.22秒・1,215KB
ImageMagick 0.92秒・1,995KB 0.66秒・653KB 3.01秒・3,224KB 2.31秒・2,168KB
PyMuPDF 0.55秒・2,185KB 0.60秒・710KB 1.19秒・8,474KB 1.53秒・2,154KB
pdf2image 0.57秒・1,865KB 0.42秒・333KB 2.05秒・5,329KB 1.28秒・1,051KB

JPG の容量の差は、主に既定の画質の違いです。PyMuPDF の Pixmap.save は公式ドキュメントで jpg_quality=95 が既定と書かれており、pdftoppm・Ghostscript(-dJPEGQ の既定は75)より大きくなります。pdf2image は中で pdftoppm を呼ぶため、JPG は pdftoppm と同じ大きさでした。

実行したコマンドは次のとおりです。

# pdftocairo(使い方は pdftoppm とほぼ同じ。PDF・SVG にも書き出せる)
pdftocairo -png -r 150 input.pdf page

# Ghostscript(Windows では gswin64c。文字をなめらかにする AlphaBits を付ける)
gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=png16m \
   -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r150 \
   -sOutputFile=page-%d.png input.pdf
#   JPG は -sDEVICE=jpeg(画質は -dJPEGQ=90 など)

# ImageMagick(中で Ghostscript を呼ぶ。-density を入力より前に書く)
convert -density 150 input.pdf page-%d.png
convert -density 150 input.pdf -background white -alpha remove page-%d.jpg

Ghostscript は、-dTextAlphaBits=4 -dGraphicsAlphaBits=4 を付けないと文字の輪郭がギザギザのまま出力されます。この環境では、付けない 150dpi の文字のページは 22KB、付けると 42KB で、付けた方が画面で読みやすくなりました。Ghostscript の公式ドキュメントも、高品質に描くには4を勧めています。

既定の解像度もツールで違います。何も指定しないと、pdftoppm・pdftocairo は150dpi、pdf2image は200dpi、Ghostscript・ImageMagick・PyMuPDF は A4 で 595×842px(72dpi 相当)になりました。dpi はいつも明示するのが、思った大きさにならないつまずきを防ぐいちばんの方法です。

全ページ一括・1ページだけ・範囲指定とファイル名の付き方

この節では、全ページ・1ページだけ・ページの範囲を指定する書き方と、ツールごとに違う出力のファイル名の付き方が分かります。

pdftoppm はページ番号を1から数え、ページ数の桁にそろえて0で埋めます。12ページの PDF を変換すると、a-01.png から a-12.png ができ、並べ替えても順番が崩れません。

$ pdftoppm -r 30 -png p12.pdf a                 # 12ページ全部
a-01.png a-02.png ... a-12.png
$ pdftoppm -r 30 -png -f 2 -l 2 p12.pdf one      # 2ページ目だけ
one-02.png
$ pdftoppm -r 30 -png -f 3 -l 3 -singlefile p12.pdf single
single.png
$ pdftoppm -r 30 -png -sep _ -f 1 -l 1 p12.pdf sep   # 区切り文字を変える
sep_01.png
$ gs ... -dFirstPage=1 -dLastPage=3 -sOutputFile=gs-%03d.png p12.pdf
gs-001.png gs-002.png gs-003.png
$ convert -density 30 "p12.pdf[0-2]" im-%d.png  # ImageMagick は0から数える
im-0.png im-1.png im-2.png
ツール ページの指定 ファイル名の番号
pdftoppm/pdftocairo -f 2 -l 5 1から。桁をそろえて0埋め(12ページなら01〜12)
Ghostscript -dFirstPage=2 -dLastPage=5 %d の書式どおり。%03d で001〜
ImageMagick "in.pdf[1-4]"(0から数える) %d は0から。1ページ目が im-0.png
PyMuPDF doc[1:5] などPythonで自由に コードで決める(page.number は0から)
pdf2image first_page=2, last_page=5 リストで受け取り、保存の名前はコードで決める

ImageMagick の番号が0から始まる点は、ほかのツールの結果と混ぜると1ずれる原因になります。ページ番号とファイル名をそろえたいときは、ImageMagick では -scene 1 を付けるか(im-1.png から始まることを確かめました)、pdftoppm を使います。

透過PNG・サイズ指定・切り抜き・埋め込み画像の取り出し

この節では、背景を透明にする方法、幅をピクセルで決める方法、ページの一部だけを画像にする方法、PDF の中の写真をそのまま取り出す方法が分かります。

背景を透明にする(透過PNG)

JPG は透明を持てないので、透過させるなら PNG にします。2ページ目(グラフのページ)で試すと、透過 PNG では全体の約85%の点が透明になりました。

方法 コマンド 透明な点
pdftocairo pdftocairo -png -transp in.pdf out 85.6%
Ghostscript -sDEVICE=pngalpha 85.4%
PyMuPDF page.get_pixmap(alpha=True) 85.3%
ImageMagick(何も付けない PNG) convert -density 72 in.pdf out.png 85.4%(既定で透明になる)
pdftoppm 透過のオプションは無い 0%(白い背景)

ImageMagick は何も付けないと背景が透明な PNG になります。黒い背景で表示するビューアーやダークモードのチャットに貼ると、黒い文字が背景に溶けて「真っ黒な画像」に見えます。白い背景にしたいときは -background white -alpha remove を付けます。

幅・高さをピクセルで決める(SNS・ブログ用)

$ pdftoppm -jpeg -scale-to-x 1080 -scale-to-y -1 -f 3 -l 3 -singlefile sample.pdf sns
$ identify sns.jpg
sns.jpg JPEG 1080x1529 1080x1529+0+0 8-bit sRGB 132914B
$ pdftoppm -png -scale-to 2000 a0.pdf s          # 長い辺を2000pxに収める
$ identify s-1.png
s-1.png PNG 1415x2000 1415x2000+0+0 8-bit sRGB 21194B

dpi ではなくピクセルで決めると、A4 でもポスターの A0 でも同じ大きさにそろいます。SNS ごとの推奨サイズは各サービスのヘルプで決まっているので、その値を -scale-to-x に入れます。

ページの一部だけを画像にする

$ pdftoppm -png -r 150 -x 100 -y 200 -W 600 -H 300 -f 1 -l 1 -singlefile sample.pdf crop
$ identify crop.png
crop.png PNG 600x300 600x300+0+0 8-bit sRGB 56651B

座標は、指定した dpi で描いたときの左上からのピクセルです。PyMuPDF なら page.get_pixmap(dpi=150, clip=pymupdf.Rect(x0, y0, x1, y1)) で、PDF の座標(ポイント)で範囲を決められます。

PDFの中の写真をそのまま取り出す

写真だけが欲しいなら、ページを画像にするより「埋め込まれた画像を取り出す」方が、元の画質のまま速く手に入ります。

$ pdfimages -list sample.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   3     0 image    1200   900  icc     3   8  jpeg   no        41  0   175   175  431K  14%
$ pdfimages -all sample.pdf img
$ identify img-000.jpg
img-000.jpg JPEG 1200x900 1200x900+0+0 8-bit sRGB 440834B

-all を付けると、JPG で入っている画像は再圧縮せずに元の形式で保存されます。PyMuPDF でも doc.extract_image(xref) で同じ 1200×900 の JPG(440,834バイト)が取り出せました。オンライン変換の「画像抽出」と同じことを手元で行う方法です。

PythonでPDFを画像に変換する(PyMuPDF・pdf2image)と一括変換

この節では、Python で PDF を画像にする2つのライブラリの使い方と、たくさんの PDF をまとめて変換する方法が分かります。

PyMuPDF(Poppler が要らない)

PyMuPDF は pip だけで入り、Poppler などの外部のプログラムが要りません。Windows・Mac・Linux 向けの wheel が配布されています。ライセンスは AGPL と商用の二本立てなので、製品に組み込むときはライセンスを確かめます。

import pymupdf  # 以前の版の書き方は import fitz

doc = pymupdf.open("input.pdf")
for page in doc:
    pix = page.get_pixmap(dpi=150)               # 既定は72dpi相当
    pix.save(f"page-{page.number + 1}.png")       # PNG
    # pix.save(f"page-{page.number + 1}.jpg", jpg_quality=85)  # JPG(既定は95)

この環境で pip install pymupdf を実行すると 2.0 が入り、依存として pymupdf4llm・pymupdf-layout・onnxruntime なども一緒に入りました。pdf2image・reportlab と合わせた venv は約290MB になり、onnxruntime などを外しても、ページを画像にする処理はそのまま動きました。容量の限られた場所に入れるときは、入ったものを pip show pymupdf の Requires で確かめます。

pdf2image(中で pdftoppm を呼ぶ)

from pdf2image import convert_from_path

# 既定は dpi=200。大きなPDFは paths_only でメモリを節約できる
images = convert_from_path("input.pdf", dpi=150, first_page=1, last_page=3)
for i, im in enumerate(images, 1):
    im.save(f"page-{i}.jpg", quality=85)

pdf2image は Poppler の pdftoppm を呼び出す薄い包みなので、Poppler が入っていないと動きません。公式の README では、ページ数が多い PDF は output_folder と paths_only=True で、画像をメモリに全部載せない方法が案内されています。画像の大きさをそろえたり切り抜いたりする後処理は、関連記事「Python Pillowで画像処理|リサイズ・トリミング・形式変換のコード集」のコードがそのまま使えます。

たくさんのPDFをまとめて変換する

同じ PDF を20個並べ、150dpi の JPG に変換しました(合計60枚)。

# 1つずつ順番に
for f in in/*.pdf; do
  pdftoppm -r 150 -jpeg "$f" "out/$(basename "$f" .pdf)"
done

# 2つずつ並列に(CPUの数に合わせる)
ls in/*.pdf | xargs -P 2 -I{} sh -c 'pdftoppm -r 150 -jpeg "$1" "out/$(basename "$1" .pdf)"' _ {}
方法 20ファイル(60枚)の時間 できるファイル名
for で1つずつ 5.29秒 doc01-1.jpg, doc01-2.jpg ...
xargs -P 2(2つ並列) 2.83秒 同じ

出力名に元の PDF の名前を入れておくと、どの PDF の何ページ目かが名前で分かります。並列の数は CPU の数までにします。xargs の並列の書き方は、関連記事「xargsの使い方とオプション一覧|-0・-I・-P並列をコピペ例で解説」で詳しく扱っています。

PDFを画像にするときのよくあるエラーとつまずき

この節では、文字化け・真っ白・真っ黒・巨大な画像・パスワード付き PDF など、変換でつまずいたときの原文と直し方が分かります。

症状 出た原文(この環境) 原因 直し方
日本語だけ消える・文字化け Syntax Error: Missing language pack for 'Adobe-Japan1' mapping フォントが埋め込まれていない PDF で、日本語の対応表(poppler-data)が無い poppler-data を入れる。pdffonts で emb が no のフォントを確かめる
パスワードで止まる(Poppler) Command Line Error: Incorrect password 開くためのパスワードが付いている 知っているパスワードを -upw で渡す
パスワードで止まる(Ghostscript) **** This file requires a password for access. 同上 -sPDFPassword=… を付ける
ImageMagick が PDF を読まない attempt to perform an operation not allowed by the security policy `PDF' policy.xml で PDF の読み込みが止められている pdftoppm などを使う。設定の変更は管理者の判断で
ImageMagick で何もできない no images defined `out.png' Ghostscript が入っていない(この文言だけが出た) Ghostscript を入れるか、pdftoppm を使う
大きな PDF で止まる cache resources exhausted 画素数がメモリ・ディスクの上限を超えた dpi を下げる・-scale-to で画素数を決める
PDF ではないと言われる Syntax Warning: May not be a PDF file 拡張子だけ .pdf の別のファイル・壊れたファイル 元のアプリで PDF として保存し直す

日本語が消える・文字化けする

フォントを埋め込まずに作った PDF(reportlab の HeiseiKakuGo-W5 で作成)を変換すると、Poppler では英字は描かれ、日本語だけが消えました。

$ pdffonts noembed.pdf
Syntax Error: Missing language pack for 'Adobe-Japan1' mapping
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Helvetica                            Type 1            WinAnsi          no  no  no       2  0
$ pdftoppm -r 100 -png noembed.pdf pp
Syntax Error: Missing language pack for 'Adobe-Japan1' mapping
Syntax Error: Unknown font tag 'F2'
Syntax Error: Unknown font tag 'F2'
Syntax Error (1918): No font in show

同じ PDF を PyMuPDF で変換すると、内蔵の日本語フォントで代わりに描かれ、日本語も表示されました。Ghostscript でも、日本語の CMap(poppler-data)を置く前は、フォントを埋め込んだ見本 PDF でさえ日本語がすべて消え、error executing PDF token と出ました。日本語が消えるときは、変換ツールの日本語用のデータ(poppler-data)が入っているか、PDF にフォントが埋め込まれているか、の2つを見ます。PDF を作る側では、フォントを埋め込んで保存するのが確実です。

真っ白・真っ黒に見える

  • 真っ黒:透過 PNG を黒い背景で表示している。-background white -alpha remove か、pdftoppm で白い背景のまま変換する。
  • 真っ白:Ghostscript の日本語の CMap が無い、フォントが埋め込まれていない、などで文字だけ描かれなかった。上の文字化けと同じ確かめ方をする。フォームの入力欄の値など、注釈として入っているものは -hide-annotations を付けると消えるので、付けていないかも見る。
  • 小さすぎて読めない:ImageMagick・Ghostscript・PyMuPDF は dpi を指定しないと 72dpi 相当(A4 で 595×842px)になる。

巨大な画像になる・メモリが足りない

A0 のポスター(2384×3370pt)を300dpi にすると、1ページで 9933×14043px、約1億4千万画素になり、色をそのまま持つと約418MB です。ImageMagick のメモリとディスクの上限を下げて(-limit memory 256MiB -limit disk 300MiB)変換すると、5.5秒で次のように止まりました。

convert-im6.q16: cache resources exhausted `/dev/shm/t139/tmp/magick-a_JHFvXFRAnpADUPyoGPGqtgpw7MRoVH1' @ error/cache.c/OpenPixelCache/4119.
convert-im6.q16: no images defined `a0.png' @ error/convert.c/ConvertImageCommand/3234.

大判の PDF は dpi ではなく -scale-to 2000 のように画素数で決めると、紙の大きさに関係なく扱える大きさになります(上の A0 は 1415×2000px・21KB)。

パスワード付きPDF(正規の手順)

開くためのパスワードが付いた PDF は、パスワードを知っている人が、そのパスワードを渡して変換します。知らない PDF のパスワードを外す方法は扱いません。作成者にパスワードか、パスワードの無い版を頼みます。

$ pdftoppm -r 50 -png locked.pdf x
Command Line Error: Incorrect password
$ pdftoppm -r 50 -png -upw open123 locked.pdf x     # 知っているパスワードを渡す
$ ls
locked.pdf  x-1.png  x-2.png  x-3.png
import pymupdf
doc = pymupdf.open("locked.pdf")
print(doc.needs_pass)          # 1(パスワードが要る)
doc.authenticate("open123")    # 2 が返り、開けた
doc[0].get_pixmap(dpi=150).save("p1.png")

認証の前にページを描こうとすると、PyMuPDF は ValueError: document closed or encrypted、pdf2image は PDFPageCountError: Unable to get page count. を出しました。pdf2image では userpw= でパスワードを渡せます。この環境の ImageMagick 6.9.12(Ghostscript は作業場所に展開したもの)は、-authenticate を付けても Ghostscript の呼び出しで失敗したため、パスワード付きの PDF は pdftoppm か PyMuPDF で変換するのが確実でした。

画像(JPG・PNG)をPDFに戻す方法

この節では、逆向きに、JPG・PNG の画像を1つの PDF にまとめる方法を短く紹介します。

画像を画質を落とさずに PDF にするなら img2pdf が確実です。JPG を再圧縮せずにそのまま PDF に入れます。

$ img2pdf pg-1.jpg pg-2.jpg pg-3.jpg -o back.pdf
$ pdfinfo back.pdf | grep -E 'Pages|Page size'
Pages:           3
Page size:       595.2 x 842.4 pts (A4)
$ pdfimages -list back.pdf | tail -1
   3     2 image    1240  1755  rgb     3   8  jpeg   no         5  0   150   150  180K 2.8%
$ pdftotext back.pdf - | od -c | head -1
0000000  \f  \f  \f

150dpi の JPG から作ると、ページの大きさは A4 に戻り、中の画像は元の JPG と同じ大きさ(3ページ目は180K)でした。ただし、pdftotext で抜き出せたのはページの区切り記号3つだけで、画像から作った PDF は文字を検索・コピーできません。ImageMagick の convert pg-*.jpg out.pdf でも PDF になりますが、画像を作り直すため画質が変わることがあります。Mac はプレビューで画像を開き、「ファイル」→「書き出す」でフォーマットを PDF にする方法が Apple のページに載っています。

図をくっきり保ったまま扱いたいときは、PNG ではなく SVG で書き出せるかも検討します。違いは関連記事「SVGファイルとは|PNGとの違い・開き方・作り方を実測で解説」で扱っています(pdftocairo は -svg で PDF を SVG にできます)。

よくある質問

Q. PDFを画像に変換するいちばん簡単な方法は? A. 1ページだけなら、PDF を大きく表示してスクリーンショットを撮る方法です(Windows は Windows ロゴ キー+Shift+S)。Mac ならプレビューの「ファイル」→「書き出す」で JPEG か PNG を選びます。全ページなら pdftoppm -jpeg -r 150 in.pdf page の1行で変換できます。

Q. PDFをJPEG(JPG)に変換するのとPNGに変換するのは、どちらがよいですか? A. 文字・表・図が中心なら PNG、写真が中心なら JPG です。150dpi の実測で、文字のページは PNG 90KB・JPG 82KB とほぼ同じでしたが、写真のページは PNG 1,696KB・JPG 180KB でした。JPG は文字のまわりに薄い汚れが出ます。

Q. 何dpiで変換すればよいですか? A. 画面で読むなら150dpi、印刷するなら300dpi が目安です。72dpi では 8pt の日本語がつぶれて読めませんでした。600dpi は 300dpi の約3〜6.5倍の容量と時間がかかり、ふつうの用途には大きすぎます。

Q. Windowsに標準でPDFを画像にする機能はありますか? A. まとめて変換する標準の機能はありません。1ページなら Snipping Tool で画面を撮り、全ページなら Adobe Acrobat Pro の「書き出し形式」→「画像」か、無料の PyMuPDF(pip で入る)・Ghostscript を使います。

Q. オンラインの変換サイトを使っても問題ありませんか? A. 機密でない書類なら手軽な方法です。ただしファイルはサービスのサーバーに送られます。契約書・個人情報・社内資料は、会社の規程を確かめたうえで、手元のアプリかコマンドで変換するのが安全です。

Q. 全ページではなく1ページだけ変換できますか? A. できます。pdftoppm なら -f 3 -l 3 で3ページ目だけ、-singlefile を足すと番号の付かない名前で保存されます。ImageMagick では "in.pdf[2]" のように0から数えた番号で指定します。

Q. 変換した画像の文字がぼやけます。 A. dpi を上げる(150→300)、JPG なら画質を上げる(-jpegopt quality=90)か PNG にする、Ghostscript なら -dTextAlphaBits=4 を付ける、の順で試します。スクリーンショットの場合は、撮る前に PDF を大きく表示します。

Q. 変換すると日本語が消えたり文字化けしたりします。 A. PDF にフォントが埋め込まれておらず、変換ツールに日本語のデータが無いことが多い原因です。pdffonts で emb が no のフォントがあるかを見て、Poppler なら poppler-data を入れます。PyMuPDF は内蔵の日本語フォントで代わりに描けました。

Q. パスワード付きのPDFは画像にできますか? A. パスワードを知っていれば、pdftoppm の -upw、Ghostscript の -sPDFPassword、PyMuPDF の authenticate()、pdf2image の userpw で渡して変換できます。知らない場合は作成者に頼みます。

Q. PDFに入っている写真だけを取り出せますか? A. pdfimages -all in.pdf img で、埋め込まれた画像を元の形式・元の大きさのまま取り出せます。見本では 1200×900px の JPG がそのまま出てきました。

Q. 変換した画像を元のPDFに戻せますか? A. img2pdf で画像を PDF にまとめられますが、文字は画像のままなので検索やコピーはできません。元の PDF は消さずに残しておくのが確実です。

まとめ

  • 1ページだけならスクリーンショットか Mac のプレビューの書き出し、全ページなら pdftoppm -jpeg -r 150 in.pdf page がいちばん早い。
  • 画面で読むなら150dpi、印刷なら300dpi。dpi を2倍にすると画素は4倍になり、PNG の容量は約3〜5倍、時間は約4〜6.5倍に増えた。
  • 文字・図は PNG、写真は JPG。150dpi の写真のページは JPG が PNG の約9分の1、JPG は文字のまわりに薄い汚れが出る。
  • ツールで既定の dpi・画質・ファイル名の番号・背景の透過が違う。dpi と形式はいつも明示し、ImageMagick の番号は0から始まる点に注意する。
  • 機密の書類はオンラインに上げず手元で変換する。日本語が消えたらフォントの埋め込みと poppler-data、パスワード付きは知っているパスワードを渡す正規の手順で。

次に読むとよい記事です。変換した画像の圧縮や形式の変え方は関連記事「WebP・HEICとは|JPG・PNGへの変換と画像圧縮を実測で解説」で、Python での後処理は関連記事「Python Pillowで画像処理|リサイズ・トリミング・形式変換のコード集」で扱っています。

参考・出典

確認日はいずれも 2026年10月29日です。

  • Poppler(PDF 描画ライブラリ・poppler-data):https://poppler.freedesktop.org/
  • pdf2image(GitHub・README):https://github.com/Belval/pdf2image
  • PyMuPDF「Installation」:https://pymupdf.readthedocs.io/en/latest/installation.html
  • PyMuPDF「Images」(ページを画像にする):https://pymupdf.readthedocs.io/en/latest/recipes-images.html
  • PyMuPDF「Pixmap」(save と jpg_quality):https://pymupdf.readthedocs.io/en/latest/pixmap.html
  • Ghostscript「Details of Ghostscript Output Devices」:https://ghostscript.readthedocs.io/en/latest/Devices.html
  • Ghostscript「Downloads」:https://www.ghostscript.com/releases/gsdnld.html
  • ImageMagick「Security Policy」:https://imagemagick.org/security-policy/
  • Apple「Mac のプレビューで画像のファイルタイプを変換する」:https://support.apple.com/guide/preview/prvw1012
  • Apple「スクリーンショットを撮る」:https://support.apple.com/ja-jp/102616
  • Microsoft「Snipping Tool を使ってスクリーン ショットをキャプチャする」:https://support.microsoft.com/ja-jp/help/13776/
  • Google「Android デバイスで画面の画像(スクリーンショット)または動画を撮影する」:https://support.google.com/android/answer/9075928?hl=ja
  • Adobe「PDF を JPG に変換する方法」(Acrobat Pro):https://www.adobe.com/jp/acrobat/how-to/convert-pdf-to-jpg.html
  • Adobe「PDF を JPG に変換(Acrobat オンライン)」:https://www.adobe.com/jp/acrobat/online/pdf-to-jpg.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「PDFを画像に変換する方法|JPG・PNGの手順とdpi別の画質・容量を実測」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

成長のヒミツ、 ぜんぶ丸わかり