紙をスキャンせずに写真でPDFを作るときの注意

2026-09-23

書類を撮った写真をPDFにまとめる、という使い方は多い。このとき、元の画像をJPEGで渡すかPNGで渡すかで、出来上がるPDFのサイズが5倍変わる。

同じ画像を両方の形式で保存して、それぞれPDFにして測った。

入れた形式元のサイズPDFのサイズ元との比PDF内の圧縮方式
JPEG410,543 B411,489 B100%DCTDecode
PNG2,787,360 B2,103,652 B75%FlateDecode

中身はまったく同じ写真だ。 それでも PDF は 411KB と 2,104KB に分かれた。

JPEGはそのまま入る

右端の列が答えになっている。

DCTDecode は、JPEGの圧縮方式そのものだ。PDFはこの方式を中に持てるので、JPEGを入れるときは圧縮されたバイト列をほどかずに、そのまま抱え込む。だから元の410KBが、ほぼそのまま411KBになる。増えた1KB弱はページの管理情報だ。

一方 FlateDecode は、PNGなどで使われる可逆圧縮だ。PNGを入れるときは、一度展開して画素に戻し、可逆のまま詰め直す。

可逆ということは、情報を1つも捨てないということでもある。捨てないので、劇的には小さくならない。

つまりPDFに入れた時点の大小は、元の画像が非可逆か可逆かでほぼ決まる。

写真はJPEGで渡す

実用的な結論はこれだけだ。

  • 写真 → JPEG。そのまま入るので、元のファイルサイズがそのまま効く
  • スクリーンショットや図 → PNGのままでいい。

もともと小さいので、展開して入れ直しても大きくならない

これは画像形式の使い分けの話とまったく同じ結論で、PDFにするときも判断は変わらないということになる。

注意が1つある。すでにJPEGになっている写真を、PNGに変換してから入れるのは損だ。JPEGの時点で捨てられた情報は戻らないのに、ファイルだけが大きくなる。「PNGのほうが高画質だから」と変換すると、画質はそのままでサイズだけ5倍になる。

ページサイズが、実質の解像度を決める

もう1つ、見落としやすい点がある。

PDFの中で画像は「このページのこの範囲に描く」という形で置かれる。つまり画像の画素数は変わらないまま、印刷される大きさだけが変わる。結果として、実質の解像度(dpi)はページサイズで決まる。

1600×1200ピクセルの画像を例にすると、こうなる。

ページの作り方ページの大きさ実質の解像度
画像に合わせる1600 × 1200 pt72 dpi
A4縦に収める595 × 842 pt約 194 dpi
A4横に収める842 × 595 pt約 137 dpi

同じ画像なのに、3倍近く違う。

「画像に合わせる」は、1ピクセルを1ポイントとして置く設定になる。PDFの1ポイントは1/72インチなので、そのまま72dpiだ。画面で見るぶんには問題ないが、印刷すると粗い。

紙に出す予定があるなら、A4など決まった用紙サイズに収めるほうがいい。同じ画素数が狭い面積に詰め込まれるので、実質の解像度が上がる。

印刷の目安は300dpiと言われる。1600×1200をA4縦に収めても194dpiなので、文字が小さい書類だと読みにくいことがある。撮る段階で解像度を上げておくしかない。

スキャナで作ったPDFとの違い

スキャナやコピー機が出すPDFは、見た目が似ていても中身の作りが違うことが多い。

多くの機種は、取り込んだ画像を内部でJPEGや、白黒2値向けの方式に変換してからPDFに入れている。解像度も200dpiや300dpiといった決まった値で取り込んでいる。

写真から作る場合は、そうした調整が挟まらない。撮影時の画素数と、指定したページサイズが、そのまま結果になる。軽くしたいなら、PDFにする前に画像の側で小さくしておく必要がある。

まとめ

  • JPEGはそのまま入り、PNGは展開して入れ直される。 同じ写真で5倍違った
  • 写真はJPEGのまま渡す。 PNGに変換してから入れると、画質はそのままで重くなるだけ
  • ページサイズが実質の解像度を決める。 「画像に合わせる」は72dpiになる
  • 印刷する予定があるなら、用紙サイズに収めるほうが精細になる

計測の条件

1600×1200のノイズ混じりの画像を、JPEG(品質85)とPNGで保存し、pdf-lib(このサイトのツールが使っているもの)で1ページのPDFにした。圧縮方式は、生成されたPDFのバイト列から /Filter を読み取った。実質の解像度は、画像の画素数をページの大きさ(1pt = 1/72インチ)で割って求めた。

この記事に対応するツール