職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

さぁ、PDF手書きの世界へ。

PDFに関して様々な処理を行うためのプログラム pdftk をWebブラウザから呼び出すことができるように、pdftk wrapper という単純なツールを作って公開しました。

github.com

何のために作ったのか?

PDFはテキストではなくてバイナリのファイル。そう認識されている方は多いと思います。私もそうでした。
ところが、PDFのファイルをテキストエディタで開いてみると、どうでしょう? なにやら人間に読める文字がたくさん出てきませんか?
人間に読める文字が多いのなら、テキストエディタでPDFを作ることだって頑張ればできるはずです。
便宜上、テキストエディタでPDFを書くことを「PDF手書き」と呼んでいます。

様々なものを表現することができる、このPDFというファイルを、自分の手で心を込めてイチから組み上げていくという行為、とてもワクワクしてきませんか?
そう思われた貴方は、もう立派なPDF手書き職人です。早速学習を進めていきましょう。

学習を進めていくと、PDFの主要な部分は人間に読める文字だけれども最後あと一歩のところでバイナリを入力したり、相互参照テーブルという、データベースで言うところのインデックスみたいな情報を持たせるところで膨大な機械的作業が必要になることに気がつきます。
そんなときにお世話になるのが pdftk というツールです。

www.pdflabs.com

このツールに、「あと一歩のところだけどもまだ完成じゃない」PDFを与えると、必要な情報を付加したり整理整頓したりして、良い感じにPDFを再構成してくれます。
もちろん他にも数多くの機能があるのですが、pdftk の紹介はこのへんにしておきましょう。
言いたいことは、pdftk はPDF手書きを趣味にしている人たちにとって、面倒臭い単純作業をきちっとこなしてくれる、大変心強い味方であるということです。

ところがこの pdftk は、Macにインストールするのがなかなか難しかったりします。私は途中で心が折れてしまいました。
そこで、Ubuntu のマシンにインストールしておいた pdftk をMacから操作できるようにしよう、そしてそれはブラウザから操作できるようにしよう、と思って、Webアプリ化しようと思い立ちました。

環境構築

冒頭に掲げた GitHub のページを見て下さい。日本語版が欲しいという人は何らかの手段で筆者に連絡を下さい。要望が多ければ日本語版も書きます。

使い方

インストールしたサイトの index.html にアクセスすると、ファイルのアップロードフォームが表示されますので、ここでアップロードします。すると、pdftkで処理した結果のファイルをダウンロードするためのURLが示されるので、そこにアクセスします。

このwrapperはブラウザから操作できますが、もちろん curl のようなコマンドからでも操作できます。どんなオプションを与えれば良いのかは、index.html を見れば、普段からcurlをお使いのみなさんにはわかるでしょう。

PDF手書きを趣味にしよう

こういう素晴らしい環境も整ってきたので、みなさんにとってもPDF手書きを趣味にする絶好のチャンスです!
やりたい!と思った人は、PDFのファイルフォーマットを学ぶために、次のような本を持っておくと良いでしょう。

PDF構造解説

PDF構造解説

私は、テキストエディタでPDFを読み書きするという行為は2009年頃から始めましたが、PDFの仕様書はとても膨大なものであり読む時間を作ることができず、「見よう見まね」で様々なことをやっていました。
そういう あやふや な知識のまま長い年月が流れましたが、この本に出会ってからは人生が変わりました。PDFの仕様を親切に解説してくれているのです。

原著(英語版)は、こちら。

PDF Explained: The ISO Standard for Document Exchange

PDF Explained: The ISO Standard for Document Exchange

PDF Explained

PDF Explained

原著にはKindle版もあります。
なお、普段から英語版を読まれている方についても、この本に関しては日本語版をお勧めします。その理由は、日本語版には日本語のフォントについての言及が書き加えられているからです。これは貴重な情報です。


それではみなさん、最高のPDF手書き生活をお過ごし下さい!!

2016年11月6日 追記

この本の日本語訳のKindle版は現時点でも出されていませんが、O'reillyさんから電子版を購入することができます。購入はこちらから。
(追記ここまで)