Quantcast
Channel: A Day In The Boy's Life
Viewing all articles
Browse latest Browse all 287

PDFを他のファイル形式に簡単に変換できるpoppler-utils

$
0
0

元ネタとしては、以前に書いた「Apache Tikaを使ってドキュメントの中身を取り出すPHPプログラム 」にてPDFファイル内のテキストを抽出しようとしたところ、PDFのセキュリティ関連の設定によって中身がうまく抽出できないケースがあったりして、Linux環境上で他にPDFの中身を取り出す方法は無いものかと調べていたらpoppler-utils内に含まれるpdftotextコマンドでうまく取り出せたよ、って話になります。



PDF内のテキストを取り出す


先に結論を書きましたが、pdftotextコマンドを使えばPDFファイル内のテキスト文を取り出すことが可能です。

pdftotextコマンドはpoppler-utilsというパッケージに含まれるため、存在しない場合はyum経由などでインストールしておきます。


# yum install poppler-utils

poppler-utilsにはpdftotext以外にもpdfinfoやpdftohtmlやpdftoppmコマンドなどが含まれています。

余談ですけど、pdf2psコマンドとかもあったりするのですが、こちらはpoppler-utilsパッケージ付属のものではなくghostscriptパッケージ付属のものです。


で、本題ですがPDFファイルからテキストデータを抽出したい場合は下記のように実行します。


$ pdftotext -raw hoge.pdf hoge.txt

上記によりhoge.pdfファイル内のテキストデータをhoge.txtに書き出してくれます。

PDFを開く際にパスワードをつけている場合は


$ pdftotext -upw yourpasswd hoge.pdf hoge

のようにパスワードを指定すれば開けたりします。

また、下記のようにセキュリティの設定をきつくしても抽出はできました(文章のメタデータにアクセスできないと書かれているのに何故)。


PDFセキュリティ設定



その外に便利なpoppler-utilsのコマンドたち


pdftotext以外にも幾つか使えそうなコマンドがあります。

PDFファイルの概要を知りたければpdfinfoコマンドが便利です。


$ pdfinfo test.pdfTitle:          ほげほげ計画書Author:         itboyCreator:        PowerPoint 用 Acrobat PDFMaker 11Producer:       Adobe PDF Library 11.0CreationDate:   Thu Apr 21 10:01:28 2016ModDate:        Thu Apr 21 10:09:55 2016Tagged:         yesPages:          5Encrypted:      yes (print:no copy:yes change:no addNotes:no)Page size:      822.12 x 538.68 ptsFile size:      308122 bytesOptimized:      yesPDF version:    1.6

オプションをつければPDF内のメタデータを取り出すことも出来ます。


$ pdfinfo -meta test.pdf -snip-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?><x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.4-c005 78.147326, 2015/04/27-13:03:03">   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">      <rdf:Description rdf:about=""            xmlns:xmp="http://ns.adobe.com/xap/1.0/"            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"            xmlns:dc="http://purl.org/dc/elements/1.1/"            xmlns:pdf="http://ns.adobe.com/pdf/1.3/"            xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">         <xmp:ModifyDate>2016-04-21T10:09:55+09:00</xmp:ModifyDate>         <xmp:CreateDate>2016-04-21T10:01:28+09:00</xmp:CreateDate>         <xmp:MetadataDate>2016-04-21T10:09:55+09:00</xmp:MetadataDate>         <xmp:CreatorTool>PowerPoint 用 Acrobat PDFMaker 11</xmp:CreatorTool>         <xmpMM:DocumentID>uuid:63c700ab-7219-4640-ac8d-8b4937b6a0dd</xmpMM:DocumentID>         <xmpMM:InstanceID>uuid:5f189849-df3a-44ab-a78e-6c342c23d7fa</xmpMM:InstanceID>         <dc:format>application/pdf</dc:format>         <dc:title>            <rdf:Alt>               <rdf:li xml:lang="x-default">ほげほげ計画書</rdf:li>            </rdf:Alt>         </dc:title>-snip-

PDFファイルをHTMLファイルに変換したい場合はpdftohtmlコマンド。

pdftotextの出力結果をHTML形式にしてくれるのかと思ってましたがそうではなく、PDFをHTML表示に変換してくれるコマンドとなってます。


$ pdftohtml hoge.pdf hogePage-1Page-2Page-3Page-4

作成が完了するとHTMLファイルやPDF内で使われている画像ファイルなどが出力されます。


$ lshoge-1_1.png  hoge-2_2.jpg  hoge-3_2.jpg  hoge-3_5.png  hoge-4_2.jpg  hoge-4_5.png  hoge-4_8.png  hoge_ind.htmlhoge-1_2.jpg  hoge-2_3.png  hoge-3_3.png  hoge-3_6.png  hoge-4_3.png  hoge-4_6.png  hoge-4_9.jpg  hoges.htmlhoge-2_1.png  hoge-3_1.png  hoge-3_4.png  hoge-4_1.png  hoge-4_4.png  hoge-4_7.png  hoge.html

ただし、結果のHTMLはオリジナルのレイアウトとかけ離れたファイルになったりしますので、あくまでHTMLファイルに変換するといった場合にしか使えそうにありません。

場合によっては、PDF内の画像を取り出したいといった場合に便利なのかもしれませんが。


PDFを画像ファイルに変換したい場合はpdftoppmコマンド。

こちらはPDFファイルをPPM(Portable PixMap file format)形式の画像に変換してくれるものなんですが、オプションでPNG形式にも変換 できます。


$ pdftoppm -r 100 -png hoge.pdf hoge

-rオプションはDPIを指定できるので解像度を適当なものに指定しましょう(デフォルトは150みたいです)。

変換すると各ページごとに画像ファイルが出来上がります。


$ lshoge-1.png  hoge-2.png  hoge-3.png  hoge-4.png

オプションで開始・終了ページや切り取り位置の指定などもできたりします。

PDFファイルをPDF以外の形式で見せたい場合やファイルのサムネイルを作りたいといった場合に便利かもしれません。






Viewing all articles
Browse latest Browse all 287

Trending Articles