概要
このプロジェクトは終了しているため読み取り専用です。
07/10 クローズ済
apサーバ使わずにlambdaを使った。
※微妙に仕様異なるがやっていることはapサーバと同じ
検証用(指示書)のチケットを"Export as PDF"すると動作する。
技術的におよそ再現できそう。
本番実装するにあたって詳細な作り込みポイントとしては
- プラグインの修正(pdf出力ボタンの配置修正とか)
- カスタムフィールドの追加(指示書入力項目をエクセルから再現)
- カスタムフィールドをpdfにプロットする座標をpyに反映
以上
本業の案件でredmine使えそう
しかし,チケットの印刷デザインカスタマイズできないことが致命的(レイアウト,デザインの要件)
機能標準でpdfエクスポート,印刷あるが,カスタマイズ性は皆無
チケットデザインを要件に合わせる方法を検討/実装してみる
検討¶
- プラグインの使用
PDFカスタマイズのプラグインがないか?
https://www.redmineup.com/pages/plugins/reporter
上記位しかない&テンプレ作成は必須&どこまでいじくれるか不明&有料
- カスタムテンプレートの作成
Redmineのソースコードを直接変更する
以下のファイルを編集することでPDFのレイアウトを変更
lib/plugins/pdf.rb: PDF生成のロジックが含まれているファイルらしい
ここでフォント、レイアウト、スタイルを変更できる
ソースコードいじるの怖いけど最短ルートな気がする
ちゃんとバージョン管理すれば保守性も問題無いと思う
redmine&rubyの制約がある
- API連携とサードパーティツールの利用
REST APIを利用してチケットデータを取得し、外部APdePDF生成
(例:LaTeX、FOP、ReportLabなど)でカスタムPDFを生成する方法
このアプローチでは、制約は皆無.最も柔軟に対応可能
3が良いと思う.¶
要件が不明確なため,制約が最小で後からいくらでも変更可能.
api-keyを使って外部apを叩くアーキテクチャなので,今後の知見的にも有用
概要¶
- チケットのpdfエクスポートボタンを追加(既存オーバーライト)するredmineプラグイン
- チケットidを引数にapサーバにリクエストを飛ばす
- apサーバでREST APIキーを利用してチケットデータを取得し、PDF生成する
- pdfをredmineに返し,ダウンロードさせる
備考¶
- redmineサーバにapサーバ(tomcat)を同居させる
- pdfは雛型PDF(項目を空欄のエクセルをPDF化したもの)に座標指定してチケットから該当の値をオーバーレイする