連載
» 2019年03月08日 05時00分 公開

Linux基本コマンドTips(288):【 pdftoppm 】コマンド――PDFファイルを画像に変換する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、PDFファイルを画像に変換する「pdftoppm」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、PDFファイルを画像に変換する「pdftoppm」コマンドです。

pdftoppmコマンドとは?

 「pdftoppm」はPDFファイルをページ単位で画像ファイルに変換するコマンドです。

 なお、PDFファイル全体を変換するのではなく、PDFファイル内の画像だけを抽出するには、「pdfimages」コマンド(連載第287回)を使います。



pdftoppmコマンドの書式

pdftoppm [オプション] PDFファイル [出力ファイル名の接頭辞]

※[ ]は省略可能な引数を示しています。





pdftoppmの主なオプション

短いオプション 意味
-f ページ番号 開始ページを指定する
-l ページ番号 終了ページを指定する
-o 奇数ページだけを出力する
-e 偶数ページだけを出力する
-singlefile 先頭ページだけを出力し、出力ファイル名に番号を付けない
-cropbox ページ全体(media box/ページサイズ)ではなく表示範囲(crop box/トリミングサイズ)を対象にする
-mono モノクロで出力する(PBM形式)
-gray グレースケールで出力する(PGM形式)
-png PNG形式で出力する
-jpeg JPEG形式で出力する
-tiff TIFF形式で出力する
-tiffcompression 圧縮方式 TIFFの圧縮形式を「none」「packbits」「jpeg」「lzw」「deflate」のいずれかで指定する
-opw パスワード PDFのオーナーパスワード
-upw パスワード PDFのユーザーパスワード
-q エラーメッセージを出力しない

pdftoppmの主なオプション(サイズと解像度)

短いオプション 意味
-scale-to 数値 画像サイズを指定する(縦または横の大きい方が指定したピクセル数になる)
-scale-to-x 数値 画像サイズ(横)
-scale-to-y 数値 画像サイズ(縦)
-r 数値 DPIの値(デフォルトは150)
-rx 数値 横方向のDPI値(デフォルトは150)
-ry 数値 縦方向のDPI値(デフォルトは150)

pdftoppmの主なオプション(トリミング)

短いオプション 意味
-x 数値 トリミング開始位置(左上隅)のx座標
-y 数値 トリミング開始位置(左上隅)のy座標
-W 数値 トリミングする幅(デフォルトは0)
-H 数値 トリミングする高さ(デフォルトは0)
-sz 数値 トリミングするサイズ(WとHを同時に指定する)

pdftoppmの主なオプション(フォント)

短いオプション 意味
-freetype no ラスタライズを無効にする(※1)
-aa no アンチエイリアスを無効にする(※1)
-aaVector no ベクターアンチエイリアスを無効にする(※1)

※1 いずれもデフォルトはyes(有効)。明示的に有効にする場合はyesを指定する。





PDFファイルを画像ファイルに変換する

 「pdftoppm PDFファイル 出力ファイル接頭辞」で、PDFファイルの各ページを画像に変換して保存します。

 例えば「pdftoppm sample.pdf image」では、sample.pdfの各ページを「image-1.ppm、image-2.ppm、image-3.ppm……」という名前で保存します。

 デフォルトの画像出力形式はPNM形式(※2)です。「-png」オプションではPNG形式、「-jpeg」オプションではJPEG形式で保存できます(画面1画面2画面3)。

※2 PNM(Portable aNyMap)形式をNetpbm形式とも言う。拡張子は「.pbm(モノクロ)」「pgm(グレースケール)」「ppm(フルカラー)。pdftoppmのデフォルト出力形式は「.ppm」で、「-mono」オプションを付けると「.bpm」、「-gray」オプションを付けると「.pgmd」で出力する。



コマンド実行例

pdftoppm sample.pdf image

(sample.pdfをページ単位で画像に変換し、image-ページ番号.ppmという名前で出力する)

pdftoppm -png sample.pdf image

(sample.pdfをページ単位で画像に変換し、image-ページ番号.pngという名前で出力する)(画面1


画面1 画面1 PDFファイルの各ページを画像(PNG形式)で保存したところ
画面2 画面2 PDFファイルの例 Webページ(https://ja.wikipedia.org/wiki/Portable_Document_Format)を「wkhtmltopdf」コマンドでPDF化したもの)
画面3 画面3 画面2に挙げたPDFファイルの1ページ目を画像に変換したところ


出力サイズを調整する

 「-scale-to 数値」オプションで、出力サイズを指定できます(画面4画面5)。例えば「-scale-to 200」とした場合、縦または横の大きい方の長さが200ピクセルとなるように調整して出力します。画像の縦横比は変化しません。

 横(x方向)だけを調整したい場合は「-scale-to-x」オプションを使い、縦(y方向)だけ調整したい場合は「-scale-to-y」オプションを使用します。これらのオプションを指定した場合は、縦横比が変化します。

コマンド実行例

pdftoppm -scale-to 200 sample.pdf thumbnail

(縦または横の最大サイズが200ピクセルになるよう縮小してthumbnail-ページ番号という名前で保存する)(画面4


画面4 画面4 出力する画像のサイズを指定したところ
画面5 画面5 画面4のコマンドの出力結果


ページの一部を切り取って画像に保存する

 ページの一部を切り取って画像に保存にしたい場合は、「-x 横の開始位置 -y 縦の開始位置 -W 幅 -H 高さ」として、位置や幅などをそれぞれピクセル単位で指定します(画面6、画面7。縦横を同じサイズにする場合は「-W」と「-H」の代わりに「-sz」を使用できます。

コマンド実行例

pdftoppm -x 20 -y 100 -W 200 -H 300 sample.pdf crop

(左上の座標(20,100)の位置から200×300ピクセルになるよう切り取って、crop-ページ番号.ppmという名前で保存する)

pdftoppm -x 20 -y 100 -sz 200 sample.pdf crop

(左上の座標(20,100)の位置から200×200ピクセルになるよう切り取って、crop-ページ番号.ppmという名前で保存する)(画面6


画面6 画面6 ページの一部を指定して画像に保存したところ
画面7 画面7 画面6のコマンドの出力結果


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。