フリーソフトPopplerのpdfimagesコマンドを利用するとPDFファイル内で使用されている画像の情報表示や画像の取り出しをすることが出来ます。

PopplerとはPDFビューア(XpdfReader)やPDF解析・変換ツールのフリーソフトです。PopplerはXpdf(フリーソフト)をベースとして機能を拡張して提供されています。
ソースコードも提供されているライブラリとなります。コマンドライン実行のため、VBAや他プログラムからも利用可能となります。
| コマンド |
|---|
| pdfimages [options] <PDF-file> <image-root> |
| オプション | |
|---|---|
| -png | 取り出した画像をPNG形式で保存 |
| -tiff | 取り出した画像をTIFF形式で保存 |
| -j | PDF内にJPEG形式で保存されている場合はJPEG形式のまま取り出す |
| -jp2 | PDF内にJPEG2000形式で保存されている場合はJPEG2000形式のまま取り出す |
| -jbig2 | PDF内にJBIG2形式で保存されている場合はJBIG2形式のまま取り出す |
| -ccitt | PDF内にCCITT形式で保存されている場合はCCITT形式のまま取り出す |
| -all | PDF内に画像形式が格納されている場合は、格納の画像形式で取り出しする。 その他はPNG形式となる。ただし、CMYK形式の場合はTIFF形式となる。 |
| -list | 画像の保存内容を一覧表示する |
| -p | 画像保存時に画像が含まれるページをファイル名に付加する |
| -q | コマンド実行時のエラーを表示しない |
| -f <int> | 解析を行うPDFの開始ページ |
| -l <int> | 解析を行うPDFの終了ページ |
| -opw <string> | オーナーパスワード設定されている場合にパスワードを指定する |
| -upw <string> | ユーザーパスワード設定されている場合にパスワードを指定する |
| -v | バージョンとコピーライトを表示する |
| -h | コマンドの使用方法を表示する |
>pdfimages -png Sample_image_zip_all.pdf ./png/
>dir png
116,918 -000.png
511 -001.png
578 -002.png
125,560 -003.png
275,335 -004.png
473 -005.png
576 -006.png
494 -007.png
744 -008.png
725 -009.png
740 -010.png
741 -011.png
732 -012.png
>pdfimages -tiff Sample_image_zip_all.pdf ./tiff/ >dir tiff 595,404 -000.tif 120,108 -001.tif 142,398 -002.tif 222,798 -003.tif 720,804 -004.tif 114,330 -005.tif 224,148 -006.tif 100,158 -007.tif 124,692 -008.tif 280,974 -009.tif 281,140 -010.tif 281,140 -011.tif 281,140 -012.tif
(注)JPEG形式以外で保存されている画像はPPM形式で取り出される。
>pdfimages -j Sample_image_zip_all.pdf ./jpeg/
>dir jpeg
18,068 -000.jpg
119,823 -001.ppm
142,095 -002.ppm
15,009 -003.jpg
30,673 -004.jpg
114,051 -005.ppm
223,773 -006.ppm
99,891 -007.ppm
124,407 -008.ppm
280,575 -009.ppm
280,734 -010.ppm
280,734 -011.ppm
280,734 -012.ppm
PDF内に形式指定されている画像は指定形式の画像で取り出しする。
その他はPNG形式となる。ただし、CMYK形式の場合はTIFF形式となる。
「-all」は以下のオプションと同じとなる。
pdfimages -png -tiff -j -jp2 -jbig2 -ccitt PdfFile.pdf ImageOutDir
>pdfimages -all Sample_image_zip_all.pdf ./all/
>dir all
18,068 -000.jpg
511 -001.png
578 -002.png
15,009 -003.jpg
30,673 -004.jpg
473 -005.png
576 -006.png
494 -007.png
744 -008.png
725 -009.png
740 -010.png
741 -011.png
732 -012.png
>pdfimages -list Sample_image_zip_all.pdf page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 991 200 rgb 3 8 jpeg no 84 0 300 300 17.6K 3.0% 1 1 image 256 156 index 1 8 image no 85 0 258 600 282B 0.7% 1 2 image 256 185 index 1 8 image no 87 0 158 600 328B 0.7% 1 3 image 220 337 rgb 3 8 jpeg no 89 0 78 78 14.7K 6.7% 1 4 image 600 400 rgb 3 8 jpeg no 90 0 154 154 30.0K 4.3% 2 5 image 221 172 index 1 8 image no 9 0 300 300 120B 0.3% 2 6 image 401 186 index 1 8 image no 11 0 300 300 423B 0.6% 2 7 image 287 116 index 1 8 image no 13 0 300 300 295B 0.9% 2 8 image 292 142 index 1 8 image no 15 0 300 300 498B 1.2% 3 9 image 334 280 index 1 8 image no 50 0 300 300 587B 0.6% 3 10 image 333 281 index 1 8 image no 52 0 300 300 589B 0.6% 3 11 image 333 281 index 1 8 image no 54 0 300 300 590B 0.6% 3 12 image 333 281 index 1 8 image no 56 0 300 300 589B 0.6% >
| -list の見方 | ||
|---|---|---|
| page | 画像が格納されているページ番号 | |
| num | 画像の通し番号 | |
| type | 画像の種類 | |
| image | 不透明な画像 | |
| mask | モノクロのマスク画像 | |
| smask | ソフトマスク画像 | |
| stencil | 色やパターンを描画するためのモノクロのマスク画像 | |
| width | 埋め込みされた画像の幅(単位:px) | |
| height | 埋め込みされた画像の高さ(単位:px) | |
| color | 使用する画像空間 | |
| gray | Gray | |
| rgb | RGB(RGBとCMYKの違いはこちら) | |
| cmyk | CMYK(RGBとCMYKの違いはこちら) | |
| lab | L*a*b | |
| icc | ICC Based | |
| index | Indexed Color(使用されている色のテーブル) | |
| sep | Separation | |
| devn | DeviceN | |
| comp | 色成分の番号 | |
| bpc | コンポーネントあたりのビット数 | |
| enc | 画像のエンコーディング | |
| image | ラスター画像(ビットマップ画像) | |
| jpeg | JPEG画像 | |
| jp2 | JPEG2000画像 | |
| jbig2 | Joint Bi-Level Image Experts Group | |
| ccitt | CCITT Group 3 or Group 4 Fax | |
| interp | 「YES」は画像を拡大するときに補間を実行する | |
| object ID | PDF内の画像オブジェクトID | |
| x-ppi | 画像の水平解像度(ピクセル/インチ) | |
| y-ppi | 画像の垂直解像度(ピクセル/インチ) | |
| size | 画像のファイルサイズ | |
| ratio | 画像の圧縮率 | |
>pdfimages -p Sample_image_zip_all.pdf ./page/
>
>dir page
594,615 -001-000.ppm
119,823 -001-001.ppm
142,095 -001-002.ppm
222,435 -001-003.ppm
720,015 -001-004.ppm
114,051 -002-005.ppm
223,773 -002-006.ppm
99,891 -002-007.ppm
124,407 -002-008.ppm
280,575 -003-009.ppm
280,734 -003-010.ppm
280,734 -003-011.ppm
280,734 -003-012.ppm
>
共通的に使用されるコマンドオプション「-f」「-l」「-opw」「-upw」「-v」「-h」等のオプションは こちら でご確認ください。
| 1 | Sample_image_zip_all.pdf | 画像が埋め込みされたPDF | 218KB |
|---|---|---|---|
| 2 | all.zip | 「-all」で取り出した画像(ZIP形式) | 65KB |
| 上記ファイルにはマクロ等は含まれていません。 | |||
同じ自画像でも画像圧縮形式や解像度などにより見た目やファイルサイズが異なります。
▼上記実行例で使用したPDFを解像度100dpiで保存したときの画像情報
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 248 50 rgb 3 8 jpeg no 76 0 75 75 3993B 11% 1 1 image 75 20 rgb 3 8 image no 77 0 76 77 104B 2.3% 1 2 image 122 24 rgb 3 8 image no 78 0 75 78 137B 1.6% 1 3 image 212 325 rgb 3 8 jpeg no 79 0 75 75 13.0K 6.5% 1 4 image 292 195 rgb 3 8 jpeg no 80 0 75 75 9310B 5.5% 2 5 image 56 43 rgb 3 8 image no 9 0 76 75 29B 0.4% 2 6 image 101 47 rgb 3 8 image no 10 0 76 76 107B 0.8% 2 7 image 72 29 rgb 3 8 image no 11 0 75 75 117B 1.9% 2 8 image 73 36 rgb 3 8 image no 12 0 75 76 152B 1.9% 3 9 image 84 70 rgb 3 8 image no 46 0 75 75 103B 0.6% 3 10 image 84 71 rgb 3 8 image no 47 0 76 76 111B 0.6% 3 11 image 84 71 rgb 3 8 image no 48 0 76 76 106B 0.6% 3 12 image 84 71 rgb 3 8 image no 49 0 76 76 110B 0.6%
Windows版を使用しています。
pdfimages version 24.08.0 Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org Copyright 1996-2011, 2022 Glyph & Cog, LLC Usage: pdfimages [options] <PDF-file> <image-root> -f <int> : first page to convert -l <int> : last page to convert -png : change the default output format to PNG -tiff : change the default output format to TIFF -j : write JPEG images as JPEG files -jp2 : write JPEG2000 images as JP2 files -jbig2 : write JBIG2 images as JBIG2 files -ccitt : write CCITT images as CCITT files -all : equivalent to -png -tiff -j -jp2 -jbig2 -ccitt -list : print list of images instead of saving -opw <string> : owner password (for encrypted files) -upw <string> : user password (for encrypted files) -p : include page numbers in output file names -print-filenames : print image filenames to stdout -q : don't print any messages or errors -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ファイルで使用されているフォントやフォントの埋め込み有無を調べる |
| pdfinfo | PDFファイルの情報(作成者、作成日時、ページ数など)を表示する |
| pdfseparate | PDFファイルを1ページごとに分割する |
| pdftocairo | PDFファイルを画像に変換する(Cairoベクターグラフィックスを使用) |
| pdftohtml | PDFをHTML形式に変換する |
| pdftoppm | PDFファイルを画像に変換する |
| pdftops | PDFファイルをPostScriptファイルに変換する |
| pdftotext | PDFファイルからテキストを抽出する |
| pdfunite | 複数のPDFファイルをページ結合する |