Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RubyでPDFを作りたくなったら Kyobashi.rb #13 資料
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shun Nishitani
August 17, 2026
Programming
60
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
「盛り上がってるチケットを見たい」- Redmine Issue Trending プラグイン- Redmine Japan vol.5 ショートスピーチ 登壇資料
nisshy82
0
34
Other Decks in Programming
See All in Programming
Flow は今どうなっているか
mizdra
PRO
0
810
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
220
Press start. Python's next generation.
willingc
PRO
3
300
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
590
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
130
仕様駆動開発の消費期限
watany
20
9.2k
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
110
リアルな遅延を測る仕様
kota_yata
1
130
T3DD26: From RAGs to Riches
martinhelmich
0
130
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
250
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
We Are The Robots
honzajavorek
0
320
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
Speed Design
sergeychernyshev
33
2.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Un-Boring Meetings
codingconduct
0
400
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The SEO Collaboration Effect
kristinabergwall1
1
540
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