Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
Rabbit on Sinatraプレゼン用PDF作成ツールrab2pdf
横山昌史Rabbitショッカー勉強会@Sinatra札幌
2013/11/24
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
自己紹介
ソフトウェア開発者
Webアプリの主戦場はSinatra
Rabbitショッカー札幌でRabbitを使っている
Rabbitコミッター札幌でRabbitにコミットしている
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
札幌市中央区Ruby会議01 2014年2月8日(土)
札幌市中央区Ruby会議01 2014年2月8日(土)
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
Rabbitとは
Rubyで書かれたプログラマー向けのプレゼンテーションツール
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
Rabbitの特徴
文章はテキストで記述
RD、Wiki、Markdownなど
装飾(テーマ)はRubyで記述RubyGemsで簡単に追加
バージョン管理しやすい
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
昨日機能が豊富
キーバインドの一部
一覧 情報 メニュー
i(小文字) I(大文字) 右クリックhttp://rabbit-shocker.org/ja/sample/rd/rabbit.html
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
Rabbit + Sinatra = rab2pdfRabbit + Sinatra = rab2pdf
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
rab2pdfとは
Webアプリケーション
RabbitのPDF生成機能を活用テキストからプレゼン用PDFを作成
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
サーバーの仕事
Rabbitはインストール済み
リクエストはSinatraで処理
SinatraからRabbitを実行PDFを生成
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
余談
RabbitはGUIアプリケーションですが、GUI環境がなくても動くように工夫されています。
なので、Webアプリケーションのバックグラウンドとしても使うことができます。
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
作り方
テキストを書く1.
rab2pdfに送信2.
PDFをダウンロード3.
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
1. テキストを書く
現在はRD形式のみ対応RabbitはWikiやMarkdownに対応
rab2pdfでも対応したい
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
2. rab2pdfに送信
普通のフォーム普通のテキストエリア
普通の送信ボタン
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
3. PDFをダウンロード
ダウンロードリンクが表示される
PDFはしばらくサーバーに残る
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
隠し機能
Gitリポジトリ指定機能
ローカルテーマや画像に対応
http://myokoym.net/rab2pdf/git?url=https://github.com/user/repo
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
使えるテーマ
Rabbit組み込みのテーマ
RubyGems.orgに公開されているテーマ
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
ソースコード
オープンソース(GPLv2+)
GitHubで公開https://github.com/myokoym/rab2pdf
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
トップページ
get "/" do @params ||= {} @params[:source] = slide_source haml :indexend
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
slide_source
= TITLE
: authorYour Name: date#{Time.now.strftime("%Y/%m/%d")}
= FIRST SLIDE
* ITEM 1* ITEM 2
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
フォーム(Haml)
%form{:action => url("/convert", false, true), :method => "post"} %p %textarea{:name => "source", :cols => 50, :rows => 10}= @params[:source] %p %input{:type => "text", :name => "filename", :size => 30, :value => @params[:filename]} %p %input{:type => "submit"}
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
PDF生成
post "/convert" do @download_url = convert(params[:source], params[:filename]) @params = params haml :indexend
Rabbit on Sinatra - プレゼン用PDF作成ツールrab2pdf Powered by Rabbit 2.1.2
Rabbit.run
def convert(source, filename) ... Tempfile.open(["rab2pdf", ".rab"]) do |tempfile| tempfile.puts(source) tempfile.flush Rabbit::Command::Rabbit.run("--print", "--output-filename", pdf_path, tempfile.path) end ...end