PDFファイル内のWebリンクの検証

PDFファイル内のWebリンクの検証

私たちの電子書籍には大量のウェブリンクが含まれており、長年、著者が原稿に追加したリンクが現在も有効であるかどうかを確認することが、最も面倒な制作作業の一つでした。この作業を簡素化するために、私は以下のプロセスを考案しました。

これを再現しようとする人にとって残念なことに、私の方法は高価なプラグイン、ARTS PDFのAerialist Pro(699ドル)に依存しています。私がAerialist Proを購入したのは、PDFのページ番号から関連ページへのPDFリンクを生成できるためです。電子書籍版のiPhoto '08: Visual QuickStart Guideの索引にあるすべてのページ番号をリンクするのに使いました。Acrobat Professional 8の驚くほど質の悪いリンクツールを使っていたら、この作業には何時間もかかっていたでしょうから、価格に見合うだけの価値があると思いました。Macでは、Aerialist ProはAcrobat
Professional 7でしか動作しないので、そのバージョンを残しておいてよかったです。Amazon.comではまだ入手できるようです。

Aerialist Proには他にも便利な機能があり、例えばすべての外部リンクをリストアップしたレポートを作成する機能など、残りのプロセスを開発するために必要な情報を得ることができました。(残念ながら、Aerialist Proのもう一つの便利な機能、ズームレベルや外観などのリンクプロパティを一括設定する機能にはバグがあり、連続モードでドキュメントを表示すると問題が発生することが判明しました。ARTS PDFがこのバグを確認しており、Aerialist ProがAcrobat Professional 8内で動作するように修正されることを期待しています。)

Aerialist Proの外部リンクレポート自体はPDF形式なので、まずはAcrobatでレポートを「Dependency Report.txt」(拡張子は必須)というプレーンテキストファイルとして保存します。しかし最終的には.htmlファイルが必要なので、NoodlesoftのHazelを設定して、特定のフォルダにある「Dependency Report.txt」というファイルを検索し、ファイル名を一意の.html拡張子に変更してBBEditで開きます。


BBEditにファイルをインポートしたら、テキストファクトリーを実行します。Aerialist Proからのかなりシンプルな出力から不要な部分を取り除き、すべてのリンクを適切なHREFに変換します。これはgrepパターンマッチングを多用する作業で、作成自体は簡単ではありませんでしたが、それほど難しくはありませんでした。


次のコツは、すべてのリンクをチェックすることです。いろいろと探して試した結果、Braxton's Link Tester(BLT)という25ドルのユーティリティを見つけました。これはリンクをチェックし、問題のあるリンクを報告してくれる便利なツールです。BBEditのテキストファクトリーを実行してファイルを保存したら、ファイルのプロキシアイコン(すべてのウィンドウのタイトルバーにある小さなアイコン。ファイルのFinderアイコンをドラッグするのと同じように、クリックして押したままドラッグするだけです)をBLTのDockアイコンにドラッグします。BLTで「リンクをチェック」ボタンをクリックし、BLTがすべてのリンクをチェックしている間、数分間他の作業をします。

BLTの気に入っている点は、正常なリンクだけを表示する緑色のチェックマークタブの選択を簡単に解除できることです。私はそれらのリンクは気にしないので、壊れたリンクに焦点を絞ることができます(下のスクリーンショットでは、正常なリンクを表示したままにしています)。BLTは単純な親指を立てた/下げた表示にとどまらず、失敗したリンク、禁止されたリンク、タイムアウトしたリンク、robots.txtで禁止されたリンク、サーバーエラー、手動で確認する必要があるメールリンク、BLTが認識しないプロトコルなどを特定します。


ほとんどの場合、壊れたリンクは 2、3 個程度しかなく、元の Word 文書と作業中の PDF ファイルに戻って、リンクを削除するか、正しいリンクに置き換えるだけです。

これがリンクチェックを自動化する唯一の方法だとは言いません。例えば、リンクを識別してチェックし、どのリンクに問題があるかを報告するAppleScriptを書くことも可能かもしれません。しかし、この例が、正常に動作するPDFファイルを作成するための手作業のステップを省く方法のヒントになれば幸いです。

Idfte
Contributing writer at Idfte. Passionate about sharing knowledge and keeping readers informed.