Poppler : PDFのコマンドラインツール

TOP > Poppler ツール


Pixfav-Images You Love to View

概要

Poppler とはPDF ドキュメントの閲覧等に用いられるフリーのツール群です。Poppler はXpdf をベースとして機能アップ、表示の効率化、 多種多様な機能を提供する目的で作成されました。

注記:効率化は誇張でした。一部は多機能故に逆に速度低下が出てます。

詳細

  1. ライセンスはGPL(フリー)
  2. 機能別にEXEファイルが存在
  3. 日本語(2バイト文字列)対応(言語ファイルより
  4. Acrobatアプリ本体がなくても動作 (当たり前
  5. ドキュメントも公式サイトも全て英語 (汗
  6. コマンドラインのツールなのでVBAなどのプログラムから制御可能
  7. Windows版だけでなく、Linux、Mac 版など多様なOSに対応
  8. 他の多数のソフトで機能の一部が利用されている
  9. 現在もバージョンアップが繰り返されている
  10. 残念なことに公式サイトではソースのみの公開で、OS単位のバイナリーは配布されてない。

ダウンロード

先にも書きましたが Poppler 公式サイトはソースのみでバイナリーは公開してません。Windows 版のEXEのバイナリーは以下からダウンロード出来ます。(2022/09/15 時点)

Version 22.04.0-0
File:Release-22.04.0-0.zip
コチラが最新です。

  • Poppler for Windows

    Version 0.68.0
    File : poppler-0.68.0_x86.7zpoppler-qt5 for mingw32

  • Version 0.32.0
    file : poppler-0.32.0-mingw32-1.zip
    sise : 7.76MB

インストール

上記で紹介したファイルは2つとも解凍するだけです。解凍先は出来ればWindows の環境変数の Path を通した方がいいです。通さないならば半角の空白が無いフォルダに置くことをオススメします。その方がイロイロとトラブルが少なく済みます。

言語ファイルのダウンロード

ココのサイトを開きます。そして「Poppler Encoding Data」と書かれている下に有る「poppler-data-0.4.9.tar.gz」の部分をクリックします。poppler-data-0.4.9.tar.gz ファイルがダウンロードできます。

Poppler 言語ファイルのダウンロード


※上記画像は旧バージョン 0.4.8 です。0.4.9 が最新です。

言語ファイルのインストール

① ダウンロードした poppler-data-0.4.9.tar.gz ファイルを解凍すると poppler-data-0.4.9 フォルダが有ります。それをpoppler にリネームします。

② Poppler の各EXE 実行フォルダbin と同じ階層に share フォルダがあります。その share フォルダの下に①のpoppler フォルダごと、そのままコピーします。

言語ファイルのインストール

③ pdfinfo.exe で言語ファイルのテストをします。

>pdfinfo.exe  -listenc

以下の様に表示されたらOKです。

001 >pdfinfo -listenc 002 Available encodings are: 003 . 004 .. 005 ASCII7 006 Big5 007 Big5ascii 008 EUC-CN 009 EUC-JP 010 GBK 011 ISO-2022-CN 012 ISO-2022-JP 013 ISO-2022-KR 014 ISO-8859-6 015 ISO-8859-7 016 ISO-8859-8 017 ISO-8859-9 018 KOI8-R 019 Latin1 020 Latin2 021 Shift-JIS 022 Symbol 023 TIS-620 024 UTF-16 025 UTF-8 026 Windows-1255 027 ZapfDingbats


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

注)poppler-data-0.4.9.tar.gz は旧バージョン 0.4.8 と表示が少し異なります。

機能

Windows 版でExe 単位での機能です。

  1. pdfdetach.exe :PDFから添付ファイルの抽出、情報の表示
  2. pdffonts.exe :PDFのフォント情報を表示 ※注意有り
  3. pdfimages.exe :PDFから画像を抽出
  4. pdfinfo.exe :PDFの文書のプロパティと各ページ情報などを表示
  5. pdfseparate.exe :PDFから単一のページを抽出
  6. pdftocairo.exe :PDFを画像形式に変換
  7. pdftohtml.exe :PDFをHTML形式に変換
  8. pdftoppm.exe :PDFをPPM画像形式に変換
  9. pdftops.exe :PDFをPostScriptファイルに変換
  10. pdftotext.exe :PDFからテキストを抽出
  11. pdfunite.exe :PDFのマージ

「表示」と書いている部分はDOSの標準出力としてテキスト出力に切り替える事も出来ます。

例:pdfinfo.exe  -meta  in.pdf  >  out.txt

 

機能別の使い方

  1. Pdfdetach の使い方
  2. Pdffonts の使い方
  3. Pdfinfo の使い方
  4. Pdfimages の使い方
  5. Pdfseparate の使い方
  6. pdftocairo の使い方
  7. pdftohtml の使い方
  8. pdftoppm の使い方
  9. pdftops の使い方
  10. Pdftotext の使い方
  11. pdfunite の使い方

Poppler を使用したVBA関数

  1. PDFから添付ファイルを取り出すVBA関数
  2. PDFの添付ファイル一覧を取得するVBA関数
  3. PDFに埋め込まれた画像の保存するVBA関数

Poppler を起動するサンプル

上記以外の処理をPoppler でさせるサンプルです。オプション等の設定、エラーの判定は全て自分で行う必要が有ります。

コマンドラインを実行する部分にはVBA関数「 RunCommandLineEX 」をご使用ください。

例:

001 ' コマンドラインを起動するメイン・デモ 002 003 Sub Main_Demo() 004 005 Dim i As Long 006 Dim bRet As Boolean 007 Dim strOutFile1() As String 008 Dim strOutFile2() As String 009 010 '引数で使う変数 011 Dim strCmd As String 012 Dim strOutFile(1) As String 013 Dim strErr As String 014 Dim strWorkFolder As String 015 Dim lRetCode As Long 016 Dim lErrCount As Long 017 Dim lErrCode(4) As Long 018 019 gDebugMode = True '実運用ではFalse 020 021 'Poppler 終了コードのセット 022 lErrCode(0) = 0 'No error. 023 lErrCode(1) = 1 'Error opening a PDF file. 024 'I/O Error: Couldn't open file 'XX.pdf': No error. 025 lErrCode(2) = 2 'Error opening an output file. 026 'I/O Error: Couldn't open text file 'xx.txt' 027 lErrCode(3) = 3 'Error related to PDF permissions. 028 lErrCode(4) = 99 'Other error. 029 lErrCount = 4 'Ubound(lErrCode) 030 strCmd = "I:¥Tools¥Run¥Poppler-0.45¥bin¥pdftotext.exe " & _ 031 "-layout " & _ 032 "I:¥Tools¥Run¥Poppler-0.45¥bin¥IN.pdf -f 9 -l 9 OUT.pdf" 033 034 'コマンドラインの実行 035 bRet = RunCommandLineEX(strCmd, strWorkFolder, _ 036 lErrCount, lErrCode, _ 037 strOutFile, strErr, lRetCode) 038 039 If gDebugMode Then 040 '実行結果の表示 041 Debug.Print "bRet=" & bRet 042 Debug.Print "lRetCode=" & lRetCode 043 strOutFile1 = Split(strOutFile(0), vbCrLf) 044 strOutFile2 = Split(strOutFile(1), vbCrLf) 045 Debug.Print "strErr=" & strErr 046 For i = 0 To UBound(strOutFile1) 047 Debug.Print "msg1 i(" & i & ")="; strOutFile1(i) 048 Next i 049 For i = 0 To UBound(strOutFile2) 050 Debug.Print "msg2 i(" & i & ")="; strOutFile2(i) 051 Next i 052 End If 053 MsgBox "End " & Now 054 End Sub 055 056 Public Function RunCommandLineEX( _ 057 ・・・・) As Boolean 058 059 'ココはVBA関数「 RunCommandLineEX 」をご使用ください。 060 ' 061 End Function


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

日本語の扱い

  • VBA関数「 RunCommandLineEX 」は標準出力のUTF-8を変換してプログラム内に読み込む機能が入っています。よってオプション「-enc Shift-JIS 」は必要としません。これにより日本語の文字化けを避けることができます。   
  • pdfinfo で結果をDos 画面に表示すると日本語の2バイト文字は化けて表示されます。但し、リダイレクト(標準出力)で出力したテキストを文字コードで自動判別出来るエディタならば日本語が正しく表示できます。でもエディタによっては表示できる出来ない場合も有ります。メモ帳はダメでした。

    ※メモ帳で表示てきたのは「CreationDate: 」と「ModDate:」の「東京 (標準時)」部分だけです。

  • pdfinfo のテキスト出力はUTF-8Nで出力してますが。一部はUNICODEになっている感じです。   
  • 「pdftotext -enc Shift-JIS  ・・・」で日本語の文字表示が可能ですが、半角文字まで2バイト文字になってしまう問題が有ります。よってこの「-enc Shift-JIS 」オプションは使用せずに、VBA関数「 RunCommandLineEX 」で内部コード変換させてください。

pdffonts.exe の使用について

バージョン0.45 の pdffonts.exe は アンチウイルスソフト(Avast) で脅威が検出され実行できません。Windows にとって好ましくない動作をおこなうみたいでアンチウイルスソフトで隔離されてしまいます。これも含め問題点をまとめてみました。

  • バージョン0.45 ではアンチウイルスソフトで脅威が検出され実行できない。
  • バージョン0.32 の pdffonts.exe はアンチウイルスソフトで脅威が検出されず実行はできる。

以上から現時点(2016/6/29)で問題無く使えそうなのは「Xpdf 3.04 の pdffonts.exe 」だけとなります。「Xpdf 3.04 の pdffonts.exe 」は2年前のソフトですが、PDFファイルの仕様そのもののバージョンは上がってないので使用に問題が出るとは考えにくいです。

001 I:¥Tools¥Run¥Xpdf¥bin32>pdffonts in1.pdf 002 Config Error: No display font for 'Symbol' 003 Config Error: No display font for 'ZapfDingbats' 004 name type emb sub uni object ID 005 ------------------------------------ ----------------- --- --- --- --------- 006 Helvetica Type 1 no no no 151 0 007 BSBASK+MS-Gothic-H CID TrueType yes yes no 158 0 008 Helvetica-Oblique Type 1 no no no 96 0 009 MMJRJM+rtcxss Type 1C yes yes no 104 0 010 KJXKQP+rtxmi Type 1C yes yes no 111 0 011 OTNCWA+txsya Type 1C yes yes yes 112 0 012 HYZHPX+t1xtt Type 1C yes yes no 113 0


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

備考

  • Poppler の言語ファイルは Xpdf と異なり固定フォルダを見るように設計されています。それならばPopplerのバイナリー配布と同時にそのフォルダも入れるようにしてくれると有難いです。

< TOPへ戻る >

VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する