ひよっこ。

I want to…

Tracの任意のWikiページをPDF出力するスクリプトを作ったよ(暫定版)

Posted by hikaruworld : 2010 1月 7

TracのPDF出力する方法は、以前の記事でも述べたようにいくつかあります。
が、その中で唯一日本語に対応しているTracWikiExportプラグインは、
残念な事にテーブル内に日本語構成が含まれていた場合にテーブル構造が崩れたり、

{{{#!html}}}

を正しく解釈できないという微妙な問題を含んでいます。

それで困っていたので、簡単にJavaのPDF出力ライブラリのiText5を利用して作ってみました。
サラッと作っただけでまだバグバグですが、コアとなるJavaの部分だけ晒しておきます。
launchpad.netにあげているので、ここからダウンロードできます。
目標としてはAdobeAirを利用したプレビュー機能&ダウンロード機能をつけたいですね。

ちなみに、プラグインとして作らずにAPIを利用して別アプリとして作ったのは、
PDF出力する状況を考えるとTrac上にプラグインとして存在する必要もないかなと思ったので。
むしろ、管理者レベルがある特定のタイミング(納期や外部との打ち合わせ)で利用するだけかなと。

使い方

実行可能jar形式なのでjava -jar で実行してください。
その際引数に、TracのXML-RPCプラグインのURL(認証には未対応),出力先,対象Wikiページ,の指定が必要になります。
以下サンプルです。

java -jar TracPDFConvertor.jar http://localhost:8080/trac/sample/xmlrpc /Output TracGuide,WikiFormatting,Hoge/HelloWorld,Piyo/*

いくつか補足します。
第一引数ではxmlrpcで接続先を指定するのでxmlrpcプラグインが必須です。
ただし、現状では認証に対応していませんので注意してください。

第三引数は、出力したいWikiページをカンマ区切りで指定します。
その際、サブディレクトリ構造を持つWikiページはそのまま指定してください(Hoge/HelloWorld)。
任意のサブディレクトリ構造以下を指定したい場合は*指定が使えます。上記のサンプル(Piyo/*)ではPiyo以下のすべてのWikiページを出力します。

出力結果は以下の通りです。

/Output/TracGuide.pdf
/Output/WikiFormatting.pdf
/Output/Hoge/HelloWorld.pdf
/Output/Piyo/1.pdf
/Output/Piyo/2.pdf

Wikiページ名+.pdfファイル名で出力が行われます。
また、サブディレクトリ指定の場合はサブディレクトリ単位でディレクトリが生成されます。

WikiFormattingの出力結果のファイルを添付しておきます。

TODO

  • AdobeAirのアプリケーションでラップする(JWSとかじゃないのは単なる趣味)
  • Wordへの出力
  • 出力形式の整形
  • Imageなどでリンク先のファイルが存在しない場合にIOExceptionで落ちる
  • スタイルシート及びフォントの設定などをプロパティから読み込めるようにする
  • 接続先Tracのスタイルシート設定の解析

ソースコードはここにあります。

xmlrpcclientで通信して、対象ページのHTMLを取得した後、iTextで書き出しているだけです。
また、外部ライブラリとして、iText5及びApacheXmlRpc、日本語フォントとしてIPAモナーフォントを利用しています。感謝。

以上です。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。