TOP > Poppler ツール > *
機能
PDF ファイル内の文字列をテキストファイルへ出力します。ページ内の座標での範囲指定での抽出もできます。出力は文字コード、改行コード、改ページコード、レイアウト制御など出来ます。
注記:PDF内の画像上の文字列をスキャンしてテキストに変換する訳では無いです。
これ以降は Poppler pdftotext.exe version 0.45.0 Windows 版での内容です。
Help の内容
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -h
002 pdftotext version 0.45.0
003 Copyright 2005-2016 The Poppler Developers - http://poppler.freedesktop.org
004 Copyright 1996-2011 Glyph & Cog, LLC
005 Usage: pdftotext [options] <PDF-file> [<text-file>]
006 -f <int> : first page to convert
007 -l <int> : last page to convert
008 -r <fp> : resolution, in DPI (default is 72)
009 -x <int> : x-coordinate of the crop area top left corner
010 -y <int> : y-coordinate of the crop area top left corner
011 -W <int> : width of crop area in pixels (default is 0)
012 -H <int> : height of crop area in pixels (default is 0)
013 -layout : maintain original physical layout
014 -fixed <fp> : assume fixed-pitch (or tabular) text
015 -raw : keep strings in content stream order
016 -htmlmeta : generate a simple HTML file, including the meta information
017 -enc <string> : output text encoding name
018 -listenc : list available encodings
019 -eol <string> : output end-of-line convention (unix, dos, or mac)
020 -nopgbrk : don't insert page breaks between pages
021 -bbox : output bounding box for each word and page size to html. Sets -htmlmeta
022 -bbox-layout : like -bbox but with extra layout bounding box data. Sets -htmlmeta
023 -opw <string> : owner password (for encrypted files)
024 -upw <string> : user password (for encrypted files)
025 -q : don't print any messages or errors
026 -v : print copyright and version info
027 -h : print usage information
028 -help : print usage information
029 --help : print usage information
030 -? : print usage information
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
形式
pdftotext [options] [PDF-file [text-file] ]
- options : オプション。複数の組み合わせ可能。
- PDF-file : 入力のPDFファイル名
- text-file : 出力するテキストファイル名
ハイフン「-」を指定すると標準出力(画面)に出力します。
保存先フォルダもココで指定できます。相対、フルパスもOK。詳細は後で。
各区切りは1つ以上の半角の空白です。
Options
各オプションはオプション文字列の前にハイフン「-」、そしてオプション名です。更に値が続く場合は1つ以上の半角の空白を入れてから、値を入れます。複数のオプションを連続で入れる時も1つ以上の半角の空白を入れて連続させます。
例:
-f 1 -l 10
-f <int>
PDFからテキストを抽出するページ範囲の最初のページ番号を指定します。無指定は1ページからの扱いになります。基本的に「 -l 」オプションと対で使用します。
例:
5頁から12頁までのテキストを出力します。
>pdftotext -f 5 -l 12 abcd.pdf out.txt
-l <int>
PDFからテキストを抽出するページ範囲の最後のページ番号を指定します。無指定は最終ページまでの扱いになります。基本的に「 -f 」オプションと対で使用します。
例:
3頁から25頁までのテキストを出力します。
>pdftotext -f 3 -l 25 abcd.pdf save¥out.txt
-r <fp>
DPIの解像度を指定します。デフォルトは72 DPIです。値は72~4000 の間です。
ここで言う解像度とは。PDF内での単位を現すための計算に持ちいられる精度を示します。解像度を示すオプションで「 -r 72 」を示すと、1/72インチ単位でPDFの座標の位置やサイズの位置が決まります。仮に解像度を「 -r 4000 」にすると1/4000インチ単位で座標の位置とサイズが更に正確に決まります。座標やサイズの値が変わるわけでは無いです。PDF内での位置を決める精度が変わるのです。(注記:独自の解釈)
使う必要は無いと特に思われます。また意味不明の時は無指定をオススメします。
-x <int>
トリミング領域の左上隅の x 座標を指定します。トリミングに関しては後でまとめて詳細に説明します。
-y <int>
トリミング領域の左上隅の y 座標を指定します。トリミングに関しては後でまとめて詳細に説明します。
-W <int>
トリミング領域の幅をピクセル単位で指定します。デフォルトは 0 です。トリミングに関しては後でまとめて詳細に説明します。
-H <int>
トリミング領域の高さをピクセル単位で指定します。デフォルトは 0 です。トリミングに関しては後でまとめて詳細に説明します。
-layout
(可能な限り)テキストの元の物理的なレイアウトを維持します。物理的なレイアウト(列、ハイフネーションなど)と出力順序を意識したテキストを出力します。
と書いてもイメージが湧かないので例を示します。
例:
以下のページの部分をトリミング指定でテキスト抽出します。
最初は「-layout」オプション有り、次は無しです。
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -x 584 -y 117 -W 247 -H 274 -layout a-de-001.pdf -
002 EUR
003 ---
004
005
006 X,XXX.XX
007 XXX,XXX,XXX.XX
008 X,XXX,XXX.XX-
009 XX,XXX,XXX.XX-
010 XXX,XXX.XX-
011 XX,XXX,XXX.XX
012 -----------------
013 XXX,XXX,XXX.XX
014 -----------------
015 XXX,XXX,XXX.XX
016 =================
017
018 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -x 584 -y 117 -W 247 -H 274 a-de-001.pdf -
019 EUR
020 --X,XXX.XX
021 XXX,XXX,XXX.XX
022 X,XXX,XXX.XXXX,XXX,XXX.XXXXX,XXX.XXXX,XXX,XXX.XX
023 ----------------XXX,XXX,XXX.XX
024 ----------------XXX,XXX,XXX.XX
025 =================
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
テキストをPDF上の配置を意識したままに表示するには「-layout」オプションを付けます。見た目には判りやすいですが、プログラミング的に処理するには不向きな場合が有ると思われます。
-fixed <fp>
Assume fixed-pitch (or tabular) text, with the specified character width (in points). This forces physical layout mode.
(ポイントで)指定された文字幅の固定ピッチ(または表)のテキストを前提としています。これは物理的なレイアウトモードを強制します。
例:
1番目は「-fixed 15 」、2番目は「-fixed 10 」、3番目は「-fixed 5 」です。
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 15 a-de-001.pdf -
002 0 123 456 789 ABC DEF
003 2 ! "# $%& '() *+, -./
004 30 123 456 789 :;< =>?
005 4@A BC DEF GHI JKL MNO
006 5P QRS TUV WXY Z[\ ]^_
007 6` abc def ghi jkl mno
008 7p qrs tuv wxy z{| ****
009 8
010 9
011 A
012 B
013 C
014 D
015 E
016 F
017
018 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 10 a-de-001.pdf -
019 0 1 2 3 4 5 6 7 8 9 A B C D E F
020 2 ! " # $ % & ' ( ) * + , - . /
021 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
022 4 @A B C D E F G H I J K L M N O
023 5 P Q R S T U V W X Y Z [ \ ] ^ _
024 6 ` a b c d e f g h i j k l m n o
025 7 p q r s t u v w x y z { | } ~ ****
026 8
027 9
028 A
029 B
030 C
031 D
032 E
033 F
034
035 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 5 a-de-001.pdf -
036 0 1 2 3 4 5 6 7 8 9 A B C D E F
037 2 ! " # $ % & ' ( ) * + , - . /
038 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
039 4 @ A B C D E F G H I J K L M N O
040 5 P Q R S T U V W X Y Z [ \ ] ^ _
041 6 ` a b c d e f g h i j k l m n o
042 7 p q r s t u v w x y z { | } ~ ****
043 8
044 9
045 A
046 B
047 C
048 D
049 E
050 F
注意:上記は出力テキストの記号文字によって、HTMLに影響が出て、表示が一部、変になっています。
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
例:
1番目は「-fixed 15 」、2番目は「-fixed 10 」、3番目は「-fixed 5 」です。
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 15 a-de-001.pdf -
002 EUR
003 ---
004
005
006 X,XXX.XX
007 XXX,XXX,XXX.XX
008 X,XXX,XXX.XX-
009 XX,XXX,XXX.XX-
010 XXX,XXX.XX-
011 XX,XXX,XXX.XX
012 -----------------
013 XXX,XXX,XXX.XX
014 -----------------
015 XXX,XXX,XXX.XX
016 =================
017
018 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 10 a-de-001.pdf -
019 EUR
020 ---
021
022
023 X,XXX.XX
024 XXX,XXX,XXX.XX
025 X,XXX,XXX.XX-
026 XX,XXX,XXX.XX-
027 XXX,XXX.XX-
028 XX,XXX,XXX.XX
029 -----------------
030 XXX,XXX,XXX.XX
031 -----------------
032 XXX,XXX,XXX.XX
033 =================
034
035 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -fixed 5 a-de-001.pdf -
036 EUR
037 ---
038
039
040 X,XXX.XX
041 XXX,XXX,XXX.XX
042 X,XXX,XXX.XX-
043 XX,XXX,XXX.XX-
044 XXX,XXX.XX-
045 XX,XXX,XXX.XX
046 -----------------
047 XXX,XXX,XXX.XX
048 -----------------
049 XXX,XXX,XXX.XX
050 =================
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
-raw
テキストをコンテンツストリームの順序で保管してください。これは、多くの場合、列の書式設定などを「元に戻す」切り刻みですrawモードの使用は推奨されていません。
例:
「-raw 」を指定しないと下記の表の文字は全て1文字ずつ縦にならんでしまいます。
「-raw 」を指定した場合です。
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -raw a-de-001.pdf -
002 0 1 2 3 4 5 6 7 8 9 A B C D E F
003 2
004 3
005 4
006 5
007 6
008 7
009 8
010 9
011 A
012 B
013 C
014 D
015 E
016 F
017 ! " # $ % & ' ( ) * + , - . /
018 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
019 @ A B C D E F G H I J K L M N O
020 P Q R S T U V W X Y Z [ \ ] ^ _
021 * a b c d e f g h i j k l m n o
022 p q r s t u v w x y z { | } ***「
注意:上記は出力テキストの記号文字によって、HTMLに影響が出て、表示が一部、変になっています。
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
-htmlmeta
メタ情報を含む、簡単なHTMLファイルを生成します。これは、単に<pre>と</ pre>でテキストをラップし、メタヘッダを付加します。
例:
>pdftotext -htmlmeta a-de-001.pdf a-de-001.html
改行コードはUnix(LF)で出力されます。
001 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
002 <head>
003 <title>Title</title>
004 <meta name="Subject" content="Subject"/>
005 <meta name="Keywords" content="Keywords"/>
006 <meta name="Author" content="Author"/>
007 <meta name="Creator" content="Creator"/>
008 <meta name="Producer" content="My Producer"/>
009 <meta name="CreationDate" content=""/>
010 </head>
011 <body>
012 <pre>
013 EUR
014 --X,XXX.XX
015 XXX,XXX,XXX.XX
016 X,XXX,XXX.XXXX,XXX,XXX.XXXXX,XXX.XXXX,XXX,XXX.XX
017 ----------------XXX,XXX,XXX.XX
018 ----------------XXX,XXX,XXX.XX
019 =================
020
021 </pre>
022 </body>
023 </html>
-bbox
ファイル内の各単語の境界ボックス情報を含む XHTML ファイルを生成します。
-bbox-layout
-bbox に似ていますが、特別なレイアウト境界ボックスデータを持ちます。 -htmlmetaを設定します。
※Xpdf に無いPoppler 独自の追加機能です。
-enc <string>
テキスト出力に使用するエンコーディングを設定します。「UTF-8」がデフォルトです。指定できるのは以下の「-listenc」オプションで表示される物だけです。
-listenc
利用可能なエンコーディングの一覧を表示します。
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -listenc
002 Available encodings are:
003 UCS-2
004 ASCII7
005 Latin1
006 UTF-8
007 ZapfDingbats
008 Symbol
-eol <string>
テキスト出力に使用する行末規則(改行コード)を設定します。unix 、 dos 、 mac のどれかを指定します。
システム | 改行コード | 記号 |
unix | LF | ¥n |
dos | CR+LF | ¥r+¥n |
mac | CR | ¥r |
>pdftotext -eol dos -de-005.pdf a-de-001.txt
-nopgbrk
ページ間の改ページ(フォームフィード文字:1バイトコード16進表示=0C)を挿入しません。
-opw password
PDFファイルの所有者のパスワードを指定します。これを提供することは、すべてのセキュリティ制限をバイパスします。つまりセキュリティ設定無しの状態に出来ます。
注記: ↑ と説明には書かれていますが、セキュリティ設定で全てを「許可しない」の状態にしても、指定無しでテキストの保存は出来ました。
-upw password
PDFファイルのユーザパスワードを指定します。これは文書を開くパスワードです。
-q
すべてのメッセージやエラーを出力しません。慣れるまで使用は控えましょう。
-v
著作権とバージョン情報を表示します。
-h , -help , --help , -?
著作権とバージョン情報、形式、引数などの簡単な説明を一覧表示します。
終了コード
pdftotext ツールは次の終了コードを返します。
- 0 : エラー無し
- 1 : 入力PDFファイルを開く時にエラーが発生した
- 2 : 出力ファイルを開く時にエラーが発生した
- 3 : 入力PDFファイルのアクセス権に関連するエラーが発生した
- 99 : その他のエラー
VBA関数からの起動
以下のVBA関数を利用してPoppler の pdftotext.exe をコマンドライン起動できます。
text-file の補足
出力テキストのファイル名の拡張子は「.txt」で無くても構いません。「.html」等でも何でもOKです。
ファイル名だけではなく、保存先フォルダも指定できます。以下に例を使って説明します。
例:
カレント・フォルダの下位フォルダ「save」に保存したい。
>pdftotext IN.pdf save¥out.txt
頭に ¥ を付けて 「¥save¥out.txt」とすると
>pdftotext IN.pdf ¥save¥out.txt
I/O Error: Couldn't open text file '¥save¥out.txt'
怒られて、エラーになります。
例:
保存先をフルパスで指定したい時は、以下の様にします。
>pdftotext IN.pdf D:¥work¥out.txt
例:
フォルダ名に半角の空白が有る時は、ダブルクオーテーションで囲みます。
>pdftotext IN.pdf "D:¥work¥sa ve¥out.txt"
例:
ファイル名に半角の空白が有る時は、ダブルクオーテーションで囲みます。
>pdftotext IN.pdf "D:¥work¥o u t.txt"
トリミング
ココではページ内で四角い範囲を指定して、その枠内から文字列を抽出する事を言います。4つのオプションで範囲を指定します。その値を決める手順を説明します。
以下は Acrobat XI での例です。
① 該当するPDFを開いたら、以下のページの「全体表示」をクリックします。
② メニューから 「表示(V)」 -> 「表示切り替え(S)」 -> 「カーソル座標(U)」 を選択します。
③ 以下の様にAcrobat 画面表示に X と Y の座標が黒いボックス内に表示されます。黒いボックスはマウスで移動も出来ます。
④ 次にAcrobat の「ツール」 -> 「ページ」 -> 「トリミング」をマウスで選択します。
⑤ PDFページのテキストを抽出したい部分をマウスでトリミング操作します。黒のカーソル座標に幅のWと高さにHが追加されて表示されます。
⑥ マウスを動かすとXとY軸の値が連動して変化して正確な値が判りません。そこでトリミングの領域にマウスを持って行って、マウスをクリックしたままにします。そうするとトリミングに必要なXとY軸の値が正確に表示されます。
⑦ この時の値が pdftotext のトリミング値になります。
⑨ 上記の値をオプションに反映して、pdftotext を実行します。
001 I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -f 9 -l 9 -x 48 -y 75 -W 513 -H 269 a-de-001.pdf -
002 TWM Limited
003 BALANCE SHEET ON 31 May 2003 - CONSOLIDATED
004 CAPITAL EMPLOYED
005 ---------------SHARE CAPITAL
006 SHARE PREMIUM
007 RETAINED INCOME/(-)ACCUMULATED LOSS
008 UNREALISED GAIN/(-)LOSS ON CURRENCY REVALUATION
009 UNREALISED GAIN/(-)LOSS ON FORWARD CONTRACTS
010 UNREALISED GAIN/(-)LOSS ON INVESTMENT VALUATION
011 SHAREHOLDERS' EQUITY
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
▽ pdftotext でトリミングをDos 実行した時。
▽ PDFページ上のトリミング範囲のテキスト
ピッタリとテキストのトリミング抽出が出来ました。
エラーメッセージの表示例
フォルダの指定方法が間違っている時。
I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -layout a-de-001.pdf ¥save¥a-de-001.txt
I/O Error: Couldn't open text file '¥save¥a-de-001.txt'
ユーザーパスワードが間違っている時。
I:¥Tools¥Run¥Poppler-0.45¥bin>pdftotext -upw def a-de-005.pdf a-de-001.txt
Command Line Error: Incorrect password
備考
- PDFの座標系はページの左下隅を基点としていますが、注釈の座標はページの左上隅を基点とします。
当 pdftotext で言うトリミングは左上隅を起点にします。
動作確認の環境
- Windows 10 64bit Pro
- Microsoft Office 2007 Excel 32bit
< Poppler へ戻る >