Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RubyでPDFを作りたくなったら Kyobashi.rb #13 資料
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shun Nishitani
August 17, 2026
Programming
95
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RubyでPDFを作りたくなったら Kyobashi.rb #13 資料
Kyobashi.rb #13 資料
Shun Nishitani
August 17, 2026
More Decks by Shun Nishitani
See All by Shun Nishitani
新しい(?)AI - Jevを Redmineで活用したーい! - 第31回redmine.tokyo勉強会 資料
nisshy82
1
29
技術書同人誌を出す - for Those Who Don't Usually Output- 第92回Ruby関西勉強会
nisshy82
0
350
「盛り上がってるチケットを見たい」- Redmine Issue Trending プラグイン- Redmine Japan vol.5 ショートスピーチ 登壇資料
nisshy82
0
43
Other Decks in Programming
See All in Programming
ActionController meets Protocol Buffers
sorah
1
790
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.8k
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
330
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
300
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
630
Crash Auto Pipelines
veronikapj
1
390
SODA - FACT BOOK(EN)
sodainc
1
210
SODA - FACT BOOK(JP)
sodainc
1
40k
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
920
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
260
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.8k
[DroidKnights 2026] Workflow AX: From Auto-Documented Policies to E2E Testing
raeminkang
0
540
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
790
Accessibility Awareness
sabderemane
1
290
Embracing the Ebb and Flow
colly
88
5.2k
Building the Perfect Custom Keyboard
takai
2
950
Music & Morning Musume
bryan
48
7.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
300
Statistics for Hackers
jakevdp
799
230k
GraphQLとの向き合い方2022年版
quramy
50
15k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
Deep Space Network (abreviated)
tonyrice
0
410
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Transcript
RubyでPDFを 作りたくなったら Kyobashi.rb #13 にっしー @nisshy82 1
自己紹介 • 名前 ◦ にっしー • Twitter(𝕏) ◦ @nisshy82 •
ソフトウェアエンジニア歴 ◦ 2年 • おしごと ◦ Redmineのプラグインを開発しています ◦ Ruby on Rails / React ◦ Claude Code 2
技書博に出ることにしました! テーマ: Redmineプラグインの作り方 • • • • 既存のRedmineへ、どう処理を差し込むか メンテナビリティの高いプラグインをどう作るか React
/ RSpec 実際にプラグインを作って詰まったところ など……… 3
経緯 8/1 きのこ関西 → 8/5 申込 → 9/13 本番 まだ1ページも書けてない
4
本を作るなら、 最初に思い浮かぶのは ……LaTeX 5
マジでLaTeXでやりたくない なぜか通らないビルド 思い通りのところに入らない画像 6
Markdown + CSSで作れたらうれしい • 書き慣れた Markdown で執筆したい • CSSもAIになら書かせられる ◦
し、最悪フォント指定なども読めて理解 できる 7
本を組むための選択肢 Vivliostyle Typst JavaScript / Node.js Rust Markdown / HTML
+ CSS → 出版向けPDF 独自のマークアップ → PDF • 目次・表紙・テーマ • Web標準のCSS組版 • 組版システムとして完 結 • コンパイルが速い 8
結論 組版システムはややこしいので この2つのどちらかを使おう! • 長いものに巻かれたほうが良さそう ◦ Vivliostyle: 2015年〜 ◦ Typst:
2019年〜 8
…………せっかくなら Rubyで書けたらいいな 9
「Rubyで本≒PDFを作る」 請求書 帳票 Web画面 技術文書 同じPDFでも、必要なレイアウトと組版が違う 10
既存のPDFに対応した gem Prawn HexaPDF Asciidoctor PDF Ferrum Kitabu prawn-html /
prawn-markup 多種多様な gem 12
Prawn Rubyのコード → PDF • Rubyから文字・表・図 形を配置する • 帳票や請求書など、形 が決まったPDFに向く
• レイアウトは自分で組 む 13
HexaPDF PDFの読み書き・編集 + 文書レイアウト → PDF • PDFそのものを読み書き・編集できる • 自動文書レイアウト機能も持っている
• HTML / CSSの組版エンジンではない 14
Asciidoctor PDF AsciiDoc + YAMLテーマ → PDF • Ruby製で、構造化された技術文書を組め る
• 標準テーマがあり、すぐPDFにできる • スタイル指定はCSSではなくテーマ言語 15
Ferrum + Chrome HTML + CSS → Chromeで描画 → PDF
• 既存のWeb画面とCSSを使える • Chromeの印刷機能へ任せられる 16
Kitabu Markdown + CSS → Prince → PDF • Ruby製の電子書籍フレームワーク
• 章構成・目次・シンタックス ハイライト、EPUB / HTML出力 • ちょっとライセンス料がかかります よ〜 17
どれを選ぶ? Prawn 固定レイアウトの帳票・請求書 HexaPDF PDF操作と文書レイアウト Asciidoctor PDF 構造化された技術文書 Ferrum +
Chrome 既存のWeb画面 Kitabu RubyでMarkdown+CSSの電子書籍 18
RubyでPDFを作る 選択肢は様々ある 19
自作オレオレ gemの紹介 ※未完成 Rubihan Markdown + CSS → PDFを、Rubyだけで、それなりに。 26
本の構成を Rubyで書ける 28
目次の作り方も、 Rubyで差し替え可能 29
今回ほしかったもの • 本文はMarkdown、紙面はCSS • ChromeやPrinceなどの外部レンダラを使わない • 文章が次のページへ流れる、一般文書 • Rubyだけで動く 「PDFを出す」だけではなく、「本を組む」が必要
20
「PDFを作る」と「文書を組む」は違う PDFを作る 文書を組む 座標・文字・図形 ↓ PDFへ描く 文章・構造・スタイル ↓ 行とページを決める ↓
PDFへ描く 21
組版システムが担当すること Markdown 文章を読む → 文書構造 見出し・段落 → CSS 見た目を決める →
レイアウト → 行・ページ・目次 PDF 結果を書き出す フォント、改行、禁則処理、改ページ、ヘッダー、ページ番号 …… 22
1行を決めるにもフォント情報が必要 文字幅が分からない → どこで改行するか 決められない 日本語では、行頭・行末に置けない文字がある(禁則処理) ex. 拗音(ゃゅょ)・撥音(っ)・句読点・カギ括弧 23
目次+ページ番号問題 本文を組む → ページ番号が分かる → 目次を入れる → ページが動く 安定するまで、ループする LaTeXで何度も見た光景
24
PDF/組版、 やっぱり大変 25
おわりに • RubyでPDFを作る選択肢は様々 • 作りたい文書と、組版のリッチさで選ぶ • PDFを作ることと、組版システムで文書を組むことは違う 30