こんにちは、デジタル事業本部の藤田です。
PDFには「しおり」という機能があり、たくさんのページがあっても一覧でインデックスを確認することができます。
しおりをクリックするとPDF内の該当ページにジャンプできるのでなかなか便利な機能です。このしおりを作成するにはAcrobat Proで編集する方法、またはWordなどOfficeアプリケーションであればドキュメントからPDFに書き出す際に自動的にしおりを付加するなどの方法があります。InDesignでもブックマークという機能であらかじめリンクを作成し、インタラクティブPDFを書き出すことでしおりを付加することが可能です。
目次
●しおりのテキスト書き出し方法
さて、そんなPDFのしおりですが既存のPDFからしおりをテキストに書き出したい場合、なにかよい方法はあるでしょうか。デフォルトではありませんのでいろいろな方法を模索してみました。
1.XMLに書き出し
デフォルトではありませんと書きましたが、実はあります。あるのです。Acrobat Proのファイルメニュー→その他の形式で保存→その他のオプション→XML 1.0 を選択するとXML書き出しの設定画面があらわれます。
しおりを含むPDFのテキストがXMLで書き出されます。
しかし、XMLとか難しくてわかんないよ! という声が聞こえてきそうです。
2.JavaScriptで書き出し
AcrobatはJavaScriptを使うことでいろいろなことができます。少しバージョンが古めですが、Adobeが出している日本語版Acrobat JavaScript APIリファレンスがこちらよりダウンロード(※2021年現在サポート終了によりリンク切れとなっています)できます。このリファレンスを読んでいくうちに、Bookmark のプロパティに「文書内のすべてのしおりを表示します。」というサンプルコードがあるのを見つけました。
しおりのあるPDFを開いて、このコードをJavaScriptデバッガーにペースト。そしてコードをすべて選択しEnterキーを押すとコンソールにしおりが表示されます!
しかし、この方法もなんだかややこしい感じです。そもそもプログラミングに縁がない人にとってはJavaScriptのハードルは高すぎです。
3.AppleScriptでアプレット作成
では、AppleScriptはどうでしょう? AppleScriptは内部でJavaScriptを動かすことが可能です。というわけで、上記2の方法をクリック一発で実行できるツールを作成してみました。
抽出したしおりはクリップボードにコピーするかテキストに書き出すかを選択することが可能です。ちなみに、テキストに書き出した場合はExcelで開くことができ、文字コードはUTF-16LE(BOM付き)なので文字化けの心配もありません。
このスクリプトはタクトシステムのHPで無料配布していますので、よろしかったらぜひダウンロードしてください。
●AcrobatでJavaScriptをAppleScriptから動かす
リファレンス記述のしおり書き出しのコードをAppleScriptで記述する方法は下記の画像の通りとなります。
AcrobatのAppleScriptではdo scriptというコマンドでJavaScriptを操作することが可能です。残念なことにAcrobatのAppleScriptは単体だとできることが少なく、JavaScriptと組み合わせるといった力技で活用することが多いです。
●しおりを作成する方法は?
しおりを書き出すこととは逆に、Excelなどのタブ区切りテキストをもとにPDFの指定ページにしおりを作成することも可能です。弊社ではしおり作成スクリプトも活用しバッチで処理しているのですが、階層構造などルールが決められていないと汎用性が持てないためスクリプトの公開は今のところ未定です。PDFのしおり作成について興味があればお気軽にお問い合わせください。