TOP > Poppler ツール
概要
Poppler とはPDF ドキュメントの閲覧等に用いられるフリーのツール群です。Poppler はXpdf をベースとして機能アップ、表示の効率化、 多種多様な機能を提供する目的で作成されました。
注記:効率化は誇張でした。一部は多機能故に逆に速度低下が出てます。
詳細
- ライセンスはGPL(フリー)
- 機能別にEXEファイルが存在
- 日本語(2バイト文字列)対応(言語ファイルより
- Acrobatアプリ本体がなくても動作 (当たり前
- ドキュメントも公式サイトも全て英語 (汗
- コマンドラインのツールなのでVBAなどのプログラムから制御可能
- Windows版だけでなく、Linux、Mac 版など多様なOSに対応
- 他の多数のソフトで機能の一部が利用されている
- 現在もバージョンアップが繰り返されている
- 残念なことに公式サイトではソースのみの公開で、OS単位のバイナリーは配布されてない。
ダウンロード
先にも書きましたが Poppler 公式サイトはソースのみでバイナリーは公開してません。Windows 版のEXEのバイナリーは以下からダウンロード出来ます。(2022/09/15 時点)
Version 22.04.0-0
File:Release-22.04.0-0.zip
コチラが最新です。
Poppler for WindowsVersion 0.68.0
File : poppler-0.68.0_x86.7zpoppler-qt5 for mingw32Version 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 ファイルがダウンロードできます。
※上記画像は旧バージョン 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 単位での機能です。
- pdfdetach.exe :PDFから添付ファイルの抽出、情報の表示
- pdffonts.exe :PDFのフォント情報を表示 ※注意有り
- pdfimages.exe :PDFから画像を抽出
- pdfinfo.exe :PDFの文書のプロパティと各ページ情報などを表示
- pdfseparate.exe :PDFから単一のページを抽出
- pdftocairo.exe :PDFを画像形式に変換
- pdftohtml.exe :PDFをHTML形式に変換
- pdftoppm.exe :PDFをPPM画像形式に変換
- pdftops.exe :PDFをPostScriptファイルに変換
- pdftotext.exe :PDFからテキストを抽出
- pdfunite.exe :PDFのマージ
「表示」と書いている部分はDOSの標準出力としてテキスト出力に切り替える事も出来ます。
例:pdfinfo.exe -meta in.pdf > out.txt
機能別の使い方
- Pdfdetach の使い方
- Pdffonts の使い方
- Pdfinfo の使い方
- Pdfimages の使い方
- Pdfseparate の使い方
- pdftocairo の使い方
- pdftohtml の使い方
- pdftoppm の使い方
- pdftops の使い方
- Pdftotext の使い方
- pdfunite の使い方
Poppler を使用した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へ戻る >