フリーソフトPopplerのpdfdetachコマンドを利用するとPDFファイル内に添付されているファイルを取り出すことが出来ます。

PopplerとはPDFビューア(XpdfReader)やPDF解析・変換ツールのフリーソフトです。PopplerはXpdf(フリーソフト)をベースとして機能を拡張して提供されています。
ソースコードも提供されているライブラリとなります。コマンドライン実行のため、VBAや他プログラムからも利用可能となります。
| コマンド |
|---|
| pdfdetach [options] <PDF-file> |
| オプション | |
|---|---|
| -list | 添付されているファイルの数と一覧を表示する |
| -save <int> | 「-list」で表示された一覧の番号を指定して添付ファイルを取り出す |
| -saveall | 添付されているすべてのファイルを取り出す |
| -o <string> | 取り出したファイルのファイル名を指定する |
| -enc <string> | 取り出しするファイル名の文字コードを指定する (例)「UTF-8」「Shift-JIS」 デフォルトは「UTF-8」 encの一覧は「pdfinfo -listenc」で確認可能 |
| -opw <string> | 対象PDFにオーナーパスワードが指定されている場合にパスワードを指定する |
| -upw <string> | 対象PDFにユーザーパスワードが指定されている場合にパスワードを指定する |
| -v | バージョンとコピーライトを表示する |
| -h | コマンドの使用方法を表示する |
PDF(添付ファイル無し)にPDFファイルとテキストファイルを添付するサンプルとしています。
>pdfdetach -list sample_attach_after.pdf 2 embedded files 1: add_PDF.pdf 2: add_TEXT.txt
「sample_attach_after.pdf」内に 「add_PDF.pdf」 「add_TEXT.txt」 の2ファイル添付されている。
>rem /*--- 実行前のディレクトリ確認 ---*/ >dir /b sample_attach_after.pdf >rem /*--- PDF内の添付ファイル一覧表示 ---*/ >pdfdetach -list sample_attach_after.pdf 2 embedded files 1: add_PDF.pdf 2: add_TEXT.txt >rem /*--- No.2の添付ファイルを取り出し ---*/ >pdfdetach -save 2 sample_attach_after.pdf >rem /*--- 実行後のディレクトリ確認 ---*/ >dir /b add_TEXT.txt sample_attach_after.pdf
「sample_attach_after.pdf」に添付されているファイルリストNo.2の 「add_TEXT.txt」 が取り出されている。
>rem /*--- 実行前のディレクトリ確認 ---*/ >dir /b sample_attach_after.pdf >rem /*--- PDF内の添付ファイル一覧表示 ---*/ > pdfdetach -list sample_attach_after.pdf 2 embedded files 1: add_PDF.pdf 2: add_TEXT.txt >rem /*--- 添付ファイルを全て取り出し ---*/ >pdfdetach -saveall sample_attach_after.pdf >rem /*--- 実行後のディレクトリ確認 ---*/ >dir /b add_PDF.pdf add_TEXT.txt sample_attach_after.pdf
「sample_attach_after.pdf」に添付されているファイル 「add_PDF.pdf」 「add_TEXT.txt」 が取り出されている。
>rem /*--- 実行前のディレクトリ確認 ---*/ >dir /b sample_attach_after.pdf >rem /*--- PDF内の添付ファイル一覧表示 ---*/ >pdfdetach -list sample_attach_after.pdf 2 embedded files 1: add_PDF.pdf 2: add_TEXT.txt >rem /*--- 添付ファイルを全て取り出し ---*/ >pdfdetach -save 2 -o aaa.txt sample_attach_after.pdf >rem /*--- 実行後のディレクトリ確認 ---*/ >dir /b aaa.txt sample_attach_after.pdf
「sample_attach_after.pdf」に添付されているファイルリストNo.2の 「add_TEXT.txt」のファイル名が 「aaa.txt」 に変更され取り出されている。
| 実行で使用したファイル | |||
|---|---|---|---|
| 1 | sample_attach_after.pdf | PDFファイル(添付あり) | 216KB |
| 2 | add_PDF.pdf | 取り出した添付PDFファイル | 114KB |
| 3 | add_TEXT.txt | 取り出した添付テキストファイル | 1KB |
| 上記ファイルにはマクロ等は含まれていません。 | |||
【注意】
一部のブラウザではPDF内の添付ファイルを開くことが出来ません。
この場合はダウンロードしてAcrobat Reader DC等でPDFを開いてください。
Windows版を使用しています。
pdfdetach version 24.08.0 Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org Copyright 1996-2011, 2022 Glyph & Cog, LLC Usage: pdfdetach [options] <PDF-file> -list : list all embedded files -save <int> : save the specified embedded file (file number) -savefile <string>: save the specified embedded file (file name) -saveall : save all embedded files -o <string> : file name for the saved embedded file -enc <string> : output text encoding name -opw <string> : owner password (for encrypted files) -upw <string> : user password (for encrypted files) -v : print copyright and version info -h : print usage information -help : print usage information --help : print usage information -? : print usage information
| 主な機能 | 概要 |
|---|---|
| pdfattach | PDFファイルに添付ファイルを埋め込みします |
| pdffonts | PDFファイルで使用されているフォントやフォントの埋め込み有無を調べる |
| pdfimages | PDFファイルで使用(埋め込み)されている画像を抽出する |
| pdfinfo | PDFファイルの情報(作成者、作成日時、ページ数など)を表示する |
| pdfseparate | PDFファイルを1ページごとに分割する |
| pdftocairo | PDFファイルを画像に変換する(Cairoベクターグラフィックスを使用) |
| pdftohtml | PDFをHTML形式に変換する |
| pdftoppm | PDFファイルを画像に変換する |
| pdftops | PDFファイルをPostScriptファイルに変換する |
| pdftotext | PDFファイルからテキストを抽出する |
| pdfunite | 複数のPDFファイルをページ結合する |