ここ2,3日で数回使ったのでメモしておきます.
poppler-utilsのpdfimagesを使う
概要
$ apt show poppler-utils | grep Description: -A99 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Description: PDF 向けユーティリティ (Poppler ベース) Poppler は xpdf PDF ビューアを基に作られた PDF 描画ライブラリです。 . 本パッケージには (Poppler ベースの) コマンドラインユーティリティが含まれ、 PDF 文書の情報の取得、他の形式への変換、編集ができます。 * pdfdetach -- 埋め込みファイル (添付ファイル) の一覧出力または抽出 * pdffonts -- フォント分析ツール * pdfimages -- 画像抽出ツール * pdfinfo -- 文書情報 * pdfseparate -- ページ抽出ツール * pdfsig -- デジタル署名の検証 * pdftocairo -- PDF から PNG/JPEG/PDF/PS/EPS/SVG への Cairo を使った変換ツール * pdftohtml -- PDF から HTML への変換ツール * pdftoppm -- PDF から PPM/PNG/JPEG 画像への変換ツール * pdftops -- PDF から PostScript (PS) への変換ツール * pdftotext -- テキストの抽出 * pdfunite -- 文書の併合ツール
導入
$ sudo apt install poppler-utils
usage
$ pdfimages pdfimages version 0.69.0 Copyright 2005-2018 The Poppler Developers - http://poppler.freedesktop.org Copyright 1996-2011 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 -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
pdfファイル内の画像リスト確認
$ pdfimages ./bicycle_parking.pdf -list page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio -------------------------------------------------------------------------------------------- 1 0 image 340 120 rgb 3 8 image no 5 0 221 221 9576B 7.8% 1 1 image 960 720 rgb 3 8 jpeg yes 14 0 170 170 64.2K 3.2%
pdfファイルから画像抜き出し既定値では.ppm形式
$ pdfimages ./bicycle_parking.pdf ./bicycle_parking-images $ ls -l ./bicycle_parking-images* -rw-r--r-- 1 matoken matoken 122415 11月 12 21:40 ./bicycle_parking-images-000.ppm -rw-r--r-- 1 matoken matoken 2073615 11月 12 21:40 ./bicycle_parking-images-001.ppm $ identify ./bicycle_parking-images-000.ppm ./bicycle_parking-images-000.ppm PPM 340x120 340x120+0+0 8-bit sRGB 122415B 0.000u 0:00.000
png形式に変換して保存
$ pdfimages ./bicycle_parking.pdf ./bicycle_parking-images -png $ ls -l ./bicycle_parking-images* -rw-r--r-- 1 matoken matoken 10274 11月 12 21:46 ./bicycle_parking-images-000.png -rw-r--r-- 1 matoken matoken 321115 11月 12 21:46 ./bicycle_parking-images-001.png $ identify ./bicycle_parking-images-000.png ./bicycle_parking-images-000.png PNG 340x120 340x120+0+0 8-bit sRGB 10274B 0.000u 0:00.000
jpegファイルはjpegとして保存(それ以外はppm)
$ pdfimages ./bicycle_parking.pdf ./bicycle_parking-images -j $ ls -l ./bicycle_parking-images* -rw-r--r-- 1 matoken matoken 122415 11月 12 21:48 ./bicycle_parking-images-000.ppm -rw-r--r-- 1 matoken matoken 65695 11月 12 21:48 ./bicycle_parking-images-001.jpg
LibreOfficeでOpenDocumentFormatに変換して画像だけ抜き出し
OpenDocumentFormatはzip形式で圧縮されてその中に画像ファイルも含まれるのでDraw形式に変換して画像ディレクトリの格納されている Pictures
だけ展開すると画像が取り出せる.
導入はディストリビューションのほかFlatpack, snapなども公式で配布されているのでお好みで.今回は Debian sid amd64 でapt installしたもの.
$ libreoffice --headless --nologo --nofirststartwizard --convert-to odg ./bicycle_parking.pdf convert /home/matoken/Downloads/bicycle_parking.pdf -> /home/matoken/Downloads/bicycle_parking.odg using filter : draw8 $ unzip ./bicycle_parking.odg Pictures/* Archive: ./bicycle_parking.odg extracting: Pictures/10000000000003C0000002D0136E1A08DF8E2B28.jpg extracting: Pictures/100000000000015400000078BA7345C344D8D008.png $ ls -lA Pictures/ 合計 80 -rw-r--r-- 1 matoken matoken 10812 11月 12 12:56 100000000000015400000078BA7345C344D8D008.png -rw-r--r-- 1 matoken matoken 65695 11月 12 12:56 10000000000003C0000002D0136E1A08DF8E2B28.jpg $ identify Pictures/* Pictures/100000000000015400000078BA7345C344D8D008.png PNG 340x120 340x120+0+0 8-bit sRGB 10812B 0.000u 0:00.000 Pictures/10000000000003C0000002D0136E1A08DF8E2B28.jpg JPEG 960x720 960x720+0+0 8-bit sRGB 65695B 0.000u 0:00.000
環境
$ dpkg-query -W poppler-utils unzip libreoffice imagemagick imagemagick 8:6.9.10.14+dfsg-7 libreoffice 1:6.1.3-1 poppler-utils 0.69.0-2 unzip 6.0-21 $ lsb_release -d Description: Debian GNU/Linux unstable (sid) $ uname -m x86_64