フリーソフトPopplerのpdftoppmコマンドを利用するとPDFを画像に変換することが出来ます。

PopplerとはPDFビューア(XpdfReader)やPDF解析・変換ツールのフリーソフトです。PopplerはXpdf(フリーソフト)をベースとして機能を拡張して提供されています。
ソースコードも提供されているライブラリとなります。コマンドライン実行のため、VBAや他プログラムからも利用可能となります。
| コマンド |
|---|
| pdftoppm [options] [PDF-file [PPM-file-prefix]] |
| オプション | |
|---|---|
| -o | PDFファイルの奇数ページのみを対象とする |
| -e | PDFファイルの偶数ページのみを対象とする |
| -singlefile | PDFファイルの最初のページのみを対象とする |
| -scale-dimension-before-rotation | 回転したPDFの場合は、回転前に寸法を変更します |
| -r <fp> | 画像変換する解像度を1インチあたりのピクセル数を指定します(縦横) |
| -rx <fp> | 画像変換する解像度を1インチあたりのピクセル数を指定します(横) |
| -ry <fp> | 画像変換する解像度を1インチあたりのピクセル数を指定します(縦) |
| -scale-to <int> | 指定したピクセルサイズ内に収まるよう画像変換します(縦横) |
| -scale-to-x <int> | 指定したピクセルサイズ内に収まるよう画像変換します(横) |
| -scale-to-y <int> | 指定したピクセルサイズ内に収まるよう画像変換します(縦) |
| -x <int> | トリミング(切り取り)する位置を指定します(横位置) |
| -y <int> | トリミング(切り取り)する位置を指定します(縦位置) |
| -W <int> | トリミング(切り取り)する位置を指定します(幅) |
| -H <int> | トリミング(切り取り)する位置を指定します(高さ) |
| -sz <int> | トリミング(切り取り)する範囲(ボックス)を指定します |
| -cropbox | クロップボックスをベースにPDFの画像化されます |
| -mono | PDFをモノクロ画像で出力する |
| -gray | PDFをグレー画像で出力する |
| -displayprofile <string> | ディスプレイとして使用するICCカラープロファイルを指定 |
| -defaultgrayprofile <string> | DefaultGrayとして使用する ICC カラープロファイルを指定 |
| -defaultrgbprofile <string> | DefaultRGB として使用する ICC カラープロファイルを指定 |
| -defaultcmykprofile <string> | DefaultCMYKとして使用する ICC カラープロファイルを指定 |
| -sep <string> | 名前とページ番号の間の 区切り文字を指定します |
| -forcenum | ページが1ページしかない場合でもページ番号を強制する |
| -png | PDFをページ単位にPNG画像に変換します |
| -jpeg | PDFをページ単位にJPEG画像に変換します |
| -jpegcmyk | PDFをページ単位にCMYK形式のJPEG画像に変換します |
| -jpegopt <string> | JPEG画像の画像品質も指定します |
| -overprint | オーバープリント(色を重ねて印刷)を有効にする |
| -tiff | PDFをページ単位にTIFF画像に変換します |
| -tiffcompression <string> | TIFF画像の画像圧縮の指定します |
| -freetype <string> | FreeTypeフォントラスタライザを有効にする |
| -thinlinemode <string> | 細線モードを設定します |
| -aa <string> | フォントのアンチエイリアシングを有効にする |
| -aaVector <string> | ベクターアンチエイリアシングを有効にする |
| -progress | 進行状況情報を表示する |
| -q | 変換時のメッセージ/エラーメッセージを非表示にします |
| -f <int> | 解析を行うPDFの開始ページを指定します |
| -l <int> | 解析を行うPDFの終了ページを指定します |
| -opw <string> | オーナーパスワード設定されている場合にパスワードを指定します |
| -upw <string> | ユーザーパスワード設定されている場合にパスワードを指定します |
| -v | バージョンとコピーライトを表示します |
| -h | コマンドの使用方法を表示します |
PDFをPPM(Portable PixMap file format)形式)ファイルに変換する。
PPM形式は、LINUXで多く利用されている画像形式のため、通常は「-png」「-jpeg」をオプション付加して利用する。
>pdftoppm Sample_toppm.pdf none/out_none
>dir none
6,530,159 out_none-1.ppm
6,530,159 out_none-2.ppm
>
>pdftoppm -e -png Sample_toppm.pdf e/out_e
>dir e
62,718 out_e-2.png
>
>pdftoppm -o -png Sample_toppm.pdf o/out_o
>dir o
268,227 out_o-1.png
>
>pdftoppm -singlefile -png Sample_toppm.pdf singlefile/out_singlefile
>dir singlefile
268,227 out_singlefile.png
>
for rotated pdf, resize dimensions before the rotation
回転したPDFの場合は、回転前に寸法を変更します
>pdftoppm -scale-dimension-before-rotation -png Sample_toppm.pdf scale-dimension-before-rotation/out_scale-dimension-before-rotation
>dir scale-dimension-before-rotation
268,227 out_scale-dimension-before-rotation-1.png
62,718 out_scale-dimension-before-rotation-2.png
>
PDFを画像に変換した後の解像度を1インチあたりのピクセル数を指定します。(デフォルト150PPI)
「-r」:縦横,「-rx」:横,「-ry」:縦
>pdftoppm -r 50 -png Sample_toppm.pdf r/out_r
>pdftoppm -rx 50 -png Sample_toppm.pdf r/out_rx
>pdftoppm -ry 50 -png Sample_toppm.pdf r/out_ry
>dir r
64,563 out_r-1.png
17,512 out_r-2.png
100,017 out_rx-1.png
34,813 out_rx-2.png
106,234 out_ry-1.png
33,488 out_ry-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_r-1.png (64KB)
out_r-2.png (18KB)
|
|
out_rx-1.png (98KB)
out_rx-2.png (34KB)
|
|
|
out_ry-1.png (104KB)
out_ry-2.png (33KB)
|
指定したピクセルサイズ内に収まるようにPDFを画像に変換します。
「-scale-to」:縦横ボックスサイズ,「-scale-to-x」:横サイズ,「-scale-to-y」:縦サイズ
>pdftoppm -scale-to 400 -png Sample_toppm.pdf scale-to/out_scale-to
>pdftoppm -scale-to-x 400 -png Sample_toppm.pdf scale-to/out_scale-to-x
>pdftoppm -scale-to-y 400 -png Sample_toppm.pdf scale-to/out_scale-to-y
>dir scale-to
35,797 out_scale-to-1.png
10,818 out_scale-to-2.png
97,654 out_scale-to-x-1.png
28,331 out_scale-to-x-2.png
79,367 out_scale-to-y-1.png
33,029 out_scale-to-y-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_scale-to-1.png (35KB)
out_scale-to-2.png (11KB)
|
|
out_scale-to-x-1.png (96KB)
out_scale-to-x-2.png (28KB)
|
|
|
out_scale-to-y-1.png (78KB)
out_scale-to-y-2.png (33KB)
|
トリミング(切り取り)する位置を指定します。
「-x」:横の開始位置,「-y」:縦の開始位置,「-W」:横幅,「-H」:高さ
>pdftoppm -x 350 -png Sample_toppm.pdf x/out_x
>pdftoppm -y 350 -png Sample_toppm.pdf x/out_y
>pdftoppm -W 350 -png Sample_toppm.pdf x/out_W
>pdftoppm -H 350 -png Sample_toppm.pdf x/out_H
>pdftoppm -x 400 -y 585 -W 440 -H 575 -png Sample_toppm.pdf x/out_xyWH
>dir x
7,714 out_H-1.png
22,599 out_H-2.png
8,370 out_W-1.png
2,993 out_W-2.png
254,530 out_x-1.png
60,156 out_x-2.png
183,485 out_xyWH-1.png
9,735 out_xyWH-2.png
262,048 out_y-1.png
40,390 out_y-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_x-1.png (249KB)
out_x-2.png (59KB)
|
|
out_y-1.png (256KB)
out_y-2.png (40KB)
|
|
|
out_W-1.png (9KB)
out_W-2.png (3KB)
|
|
|
out_H-1.png (8KB)
out_H-2.png (23KB)
|
|
|
out_xyWH-1.png (180KB)
out_xyWH-2.png (10KB)
|
トリミング(切り取り)する範囲(ボックス)を指定します。
「-W」「-H」を両方したのと同等の機能となります。
>pdftoppm -x 330 -y 585 -sz 575 -png Sample_toppm.pdf sz/out_sz
>dir sz
189,013 out_sz-1.png
12,751 out_sz-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_sz-1.png (185KB)
out_sz-2.png (13KB)
|
メディアボックスではなく、クロップボックスをベースにPDFの画像化が行われます。
>pdftoppm -cropbox -png Sample_toppm.pdf cropbox/out_cropbox
>dir cropbox
268,227 out_cropbox-1.png
62,718 out_cropbox-2.png
>
>pdftoppm -hide-annotations -png Annotation.pdf hide-annotations/out_hide-annotations
>pdftoppm -png Annotation.pdf hide-annotations/out_hide-annotations_none
>dir hide-annotations
28,315 out_hide-annotations-1.png
29,022 out_hide-annotations_none-1.png
>
| 元PDF | 変換後画像 |
|---|---|
| Annotation.pdf (36KB) |
out_hide-annotations-1.png (28KB)
|
>pdftoppm -mono -png Sample_toppm.pdf mono/out_mono
>dir mono
43,107 out_mono-1.png
25,015 out_mono-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_mono-1.png (43KB)
out_mono-2.png (25KB)
|
>pdftoppm -gray -png Sample_toppm.pdf gray/out_gray
>dir gray
205,670 out_gray-1.png
60,059 out_gray-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_gray-1.png (201KB)
out_gray-2.png (59KB)
|
名前とページ番号の間の 1 文字の区切り文字
デフォルトは「-」
>pdftoppm -sep "#" -png Sample_toppm.pdf sep/out_sep
>dir sep
268,227 out_sep#1.png
62,718 out_sep#2.png
>
ページが1ページしかない場合でもページ番号を強制する
>pdftoppm -singlefile -forcenum -png Sample_toppm.pdf forcenum/out_forcenum
>pdftoppm -singlefile -png Sample_toppm.pdf forcenum/out_forcenum_none
>dir forcenum
268,227 out_forcenum-1.png
268,227 out_forcenum_none.png
>
>pdftoppm -png Sample_toppm.pdf png/out_png
>dir png
268,227 out_png-1.png
62,718 out_png-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_png-1.png (262KB)
out_png-2.png (62KB)
|
「jpegopt」で画像品質も指定できます。
>pdftoppm -jpeg Sample_toppm.pdf jpeg\out_jpeg
>pdftoppm -jpeg -jpegopt quality=7,progressive=n Sample_toppm.pdf jpeg/out_jpegopt
>dir jpeg
101,477 out_jpeg-1.jpg
86,383 out_jpeg-2.jpg
48,022 out_jpegopt-1.jpg
47,907 out_jpegopt-2.jpg
>
「jpgopt」の指定内容
| パラメータ | 設定値 |
|---|---|
| quality | JPEGの画像品質(0~100) |
| progressive | プログレッシブの有無(y:あり, n:なし) |
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_jpeg-1.jpg (100KB)
out_jpeg-2.jpg (85KB)
|
|
out_jpegopt-1.jpg (47KB)
out_jpegopt-2.jpg (47KB)
|
>pdftoppm -jpegcmyk -jpeg Sample_toppm.pdf jpeg/out_jpegcmyk
>dir jpeg
93,936 out_jpegcmyk-1.jpg
78,116 out_jpegcmyk-2.jpg
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_jpegcmyk-1.jpg (92KB)
out_jpegcmyk-2.jpg (77KB)
|
>pdftoppm -overprint -png Sample_toppm.pdf overprint/out_overprint
>dir overprint
300,393 out_overprint-1.png
63,160 out_overprint-2.png
>
「tiffcompression」で画像圧縮の指定も可能です。
>pdftoppm -tiff Sample_toppm.pdf tiff/out_tiff
>pdftoppm -tiffcompression lzw -tiff Sample_toppm.pdf tiff/out_tiffcompression
>dir tiff
6,535,608 out_tiff-1.tif
6,537,792 out_tiff-2.tif
234,060 out_tiff_lzw-1.tif
279,424 out_tiff_lzw-2.tif
>
「tiffcompression」の指定内容
| パラメータ | 設定値 |
|---|---|
| tiffcompression | 圧縮形式(「none」「packbits」「jpeg」「lzw」「deflate」) |
FreeTypeフォントラスタライザを有効にする(「yes」「no」)。
>pdftoppm -freetype yes -png Sample_toppm.pdf freetype/out_freetype_y
>pdftoppm -freetype no -png Sample_toppm.pdf freetype/out_freetype_n
>dir jpeg
213,072 out_freetype_n-1.png
9,393 out_freetype_n-2.png
268,227 out_freetype_y-1.png
62,718 out_freetype_y-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_freetype_y-1.png (262KB)
out_freetype_y-2.png (62KB)
|
|
out_freetype_n-1.png (209KB)
out_freetype_n-2.png (10KB)
|
細線モードを設定します: なし、実線、シェイプ。デフォルト: なし
>pdftoppm -thinlinemode solid -png Sample_toppm.pdf thinlinemode/out_thinlinemode_solid
>pdftoppm -thinlinemode shape -png Sample_toppm.pdf thinlinemode/out_thinlinemode_shape
>dir thinlinemode
268,227 out_thinlinemode_shape-1.png
62,718 out_thinlinemode_shape-2.png
268,227 out_thinlinemode_solid-1.png
62,718 out_thinlinemode_solid-2.png
>
フォントのアンチエイリアシングを有効にする(「yes」「no」)。
>pdftoppm -aa yes -png Sample_toppm.pdf aa/out_aa_y
>pdftoppm -aa no -png Sample_toppm.pdf aa/out_aa_n
>dir jpeg
221,085 out_aa_n-1.png
16,399 out_aa_n-2.png
268,227 out_aa_y-1.png
62,718 out_aa_y-2.png
>
| 元PDF | 変換後画像 |
|---|---|
| Sample_toppm.pdf (32KB) |
out_aa_y-1.png (262KB)
out_aa_y-2.png (62KB)
|
|
out_aa_n-1.png (216KB)
out_aa_n-2.png (17KB)
|
ベクターアンチエイリアシングを有効にする(「yes」「no」)。
>pdftoppm -aaVector no -png Sample_toppm.pdf aaVector/out_aaVector_n
>pdftoppm -aaVector yes -png Sample_toppm.pdf aaVector/out_aaVector_y
>dir thinlinemode
268,227 out_aaVector_n-1.png
62,718 out_aaVector_n-2.png
268,227 out_aaVector_y-1.png
62,718 out_aaVector_y-2.png
>
>pdftoppm -progress -png Sample_toppm.pdf progress/out_progress
1 2 progress/out_progress-1.png
2 2 progress/out_progress-2.png
>dir thinlinemode
268,227 out_progress-1.png
62,718 out_progress-2.png
>
共通的に使用されるコマンドオプション「-f」「-l」「-enc」「-opw」「-upw」「-v」「-h」等のオプションは こちら でご確認ください。
Windows版を使用しています。
pdftoppm version 24.08.0 Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org Copyright 1996-2011, 2022 Glyph & Cog, LLC Usage: pdftoppm [options] [PDF-file [PPM-file-prefix]] -f <int> : first page to print -l <int> : last page to print -o : print only odd pages -e : print only even pages -singlefile : write only the first page and do not add digits -scale-dimension-before-rotation : for rotated pdf, resize dimensions before the rotation -r <fp> : resolution, in DPI (default is 150) -rx <fp> : X resolution, in DPI (default is 150) -ry <fp> : Y resolution, in DPI (default is 150) -scale-to <int> : scales each page to fit within scale-to*scale-to pixel box -scale-to-x <int> : scales each page horizontally to fit in scale-to-x pixels -scale-to-y <int> : scales each page vertically to fit in scale-to-y pixels -x <int> : x-coordinate of the crop area top left corner -y <int> : y-coordinate of the crop area top left corner -W <int> : width of crop area in pixels (default is 0) -H <int> : height of crop area in pixels (default is 0) -sz <int> : size of crop square in pixels (sets W and H) -cropbox : use the crop box rather than media box -hide-annotations : do not show annotations -mono : generate a monochrome PBM file -gray : generate a grayscale PGM file -displayprofile <string> : ICC color profile to use as the display profile -defaultgrayprofile <string> : ICC color profile to use as the DefaultGray color space -defaultrgbprofile <string> : ICC color profile to use as the DefaultRGB color space -defaultcmykprofile <string> : ICC color profile to use as the DefaultCMYK color space -sep <string> : single character separator between name and page number, default - -forcenum : force page number even if there is only one page -png : generate a PNG file -jpeg : generate a JPEG file -jpegcmyk : generate a CMYK JPEG file -jpegopt <string> : jpeg options, with format <opt1>=<val1>[,<optN>=<valN>]* -overprint : enable overprint -tiff : generate a TIFF file -tiffcompression <string> : set TIFF compression: none, packbits, jpeg, lzw, deflate -freetype <string> : enable FreeType font rasterizer: yes, no -thinlinemode <string> : set thin line mode: none, solid, shape. Default: none -aa <string> : enable font anti-aliasing: yes, no -aaVector <string> : enable vector anti-aliasing: yes, no -opw <string> : owner password (for encrypted files) -upw <string> : user password (for encrypted files) -q : don't print any messages or errors -progress : print progress info -v : print copyright and version info -h : print usage information -help : print usage information --help : print usage information -? : print usage information
| 主な機能 | 概要 |
|---|---|
| pdfattach | PDFファイルに添付ファイルを埋め込みします |
| pdfdetach | PDF内に添付(埋め込み)されているファイルの一覧表示や抽出を行います |
| pdffonts | PDFファイルで使用されているフォントやフォントの埋め込み有無を調べる |
| pdfimages | PDFファイルで使用(埋め込み)されている画像を抽出する |
| pdfinfo | PDFファイルの情報(作成者、作成日時、ページ数など)を表示する |
| pdfseparate | PDFファイルを1ページごとに分割する |
| pdftocairo | PDFファイルを画像に変換する(Cairoベクターグラフィックスを使用) |
| pdftohtml | PDFをHTML形式に変換する |
| pdftops | PDFファイルをPostScriptファイルに変換する |
| pdftotext | PDFファイルからテキストを抽出する |
| pdfunite | 複数のPDFファイルをページ結合する |