データを抽出するための非常にハッキーな方法がありますが、8.51や8.62などの古いバージョンのghostscriptでのみ機能します。古いバージョンのghostscriptでは、PDFコマンドは/lib/pdf_ops.psで定義されています。新しいバージョンは別のことを行います。
バージョン8.62のテスト済みバージョンは、こちらから入手できます。
http://sourceforge.net/projects/ghostscript/files/GPL%20Ghostscript/8.62/gs862w32.exe/download
後のテキストは、各定義の先頭にを使用/Tj {} def
し/TJ {} def
て、を追加することによって印刷されます。dup ==
(これはもっと洗練されたものにすることができます)フォントの警告メッセージについても心配する必要はありませんでしたが、データがファイルに書き込まれると、これらは除外されます。
カーニングが行われているため、一部の単語は断片と個々の文字に分割されます。時間があれば、これもフィルタリングできます。
pdf_ops.psから/Tjを変更/Tj{dup == 0 0 moveto Show settextposition} bdef
pdf_ops.psから/TJを変更
/TJ { dup ==
0 0 moveto {
dup type /stringtype eq {
Show
} { -1000 div
currentfont /ScaleMatrix .knownget { 0 get mul } if
0 Vexch rmoveto
} ifelse
} forall settextposition
} bdef
出力
(Help a neighbor within your county each month by contributing to The Salvation )
(Army's Project SHARE and Georgia Power will match your gift. To help, simply check )
($1, $2, $5, or $10 on the return portion of this bill. Starting next month, your pledge )
(amount will be included on your monthly bill.)
(Our business offices will be closed on December 24 and 25 for Christmas and January )
(1 for New Year's Day. In case of an emergency, please call us at the number on your )
(bill 24 hours a day, 7 days a week.)
(PLEASE KEEP THIS PORTION FOR YOUR RECORDS.)
(PLEASE RETURN THIS PORTION WITH YOUR PAYMENT, MAKING SURE THE RETURN ADDRESS SHOWS IN THE ENVELOPE WINDOW.)
(Account Number)
(Mail To:)
追記は面白くないですか?