Advent Calendarといえば、クリスマスをターゲットとしたイベントですが、クリスマスが終わればもうお正月。
ということで、PDFモジュールを使っておみくじを作りました。
PDFモジュールの使い方は簡単です。
% play install pdf
とコマンドを打てば、インストールされます。
あとは、他のモジュールと同じようにapplication.confに書くか、dependencies.ymlに追記してdependenciesコマンドを叩きます。
実際に使用する場合は、
import static play.modules.pdf.PDF.*;
とimportします。
以下、おみくじアプリのコードです。
package controllers; import play.*; import play.mvc.*; import java.util.*; import models.*; import static play.modules.pdf.PDF.*; public class Application extends Controller { public static void index() { Options options = new Options(); options.filename = "omikuji"; String result = getResult(); renderPDF(options, result); } private static String getResult(){ String[] kuji = {"Daikichi", "Chukichi", "Kichi", "Shokichi", "Kyo", "Daikyo"}; Random rnd = new Random(); int index = rnd.nextInt(kuji.length); return kuji[index]; } }
実際にPDF出力する実装は、通常render()とする箇所をrenderPDF()と書いているだけです。第一引数のoptionsは、PDF出力の際の各種オプションを設定することができ、今回はファイル名を定義しています。
その他のオプションについてはこちらを参照してください。
http://www.playframework.org/modules/pdf-0.7/home
viewのコードを見ていただくとわかるのですが、cssも普通に反映されます。
#{extends 'main.html' /} #{set title:'Home' /} <style type="text/css"> <!-- .omikuji{ text-align:center; margin:0px auto; background-color:#FFCC5A; border-color:#660000; border-width:2px; border-style:solid; width:150px; height:100px; display:block; } --> </style> <div class="omikuji"> Your fortune is <b>&{result}</b> !! </div>
今回の実装で一点詰まった箇所がありまして、コードを見ていただくと分かるのですが、おみくじの結果が"Daikichi"のように少し不自然な形になっています。
本来は"大吉"としたかったのですが、日本語のフォントに対応していないようで、レンダリングされませんでした。
heroku上でこのアプリを実際に動かしていただくことができます。
http://quiet-beach-8560.herokuapp.com/
アクセスするといきなり結果がPDFで出力されますのでご注意ください。
ソースコードはこちら。
https://github.com/daiksy/PlayAdvent
ちなみに、RenderPDF()をRender()と書き換えると、このように動きます。
http://pure-ocean-8055.herokuapp.com/
それでは、少し気が早いですが、来年の運勢など占ってはいかがでしょうか?
次は @arahaya さんです。
0 件のコメント:
コメントを投稿