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
カスタムフィールドのデータを表形式でPDFに書き出す方法 / a-blog cms with ...
Search
Ohta Konatsu
May 18, 2019
Programming
0
230
カスタムフィールドのデータを表形式でPDFに書き出す方法 / a-blog cms with pdfmake
a-blog cms Training Camp 2019 Spring 2日目にお話させていただいた内容です。
Ohta Konatsu
May 18, 2019
Tweet
Share
More Decks by Ohta Konatsu
See All by Ohta Konatsu
テンプレートの変更を減らすために心がけていること
flour621
0
69
「ここのアニメーション、おまかせで!」と言われたら / What is important for css animation
flour621
0
32
Other Decks in Programming
See All in Programming
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
15
3k
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.6k
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
370
CSC307 Lecture 13
javiergs
PRO
0
320
CSC307 Lecture 14
javiergs
PRO
0
470
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
130
Codex の「自走力」を高める
yorifuji
0
1.2k
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
250
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
110
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
420
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
680
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
How STYLIGHT went responsive
nonsquared
100
6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Accessibility Awareness
sabderemane
0
77
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
A Soul's Torment
seathinner
5
2.4k
What's in a price? How to price your products and services
michaelherold
247
13k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
69
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Site-Speed That Sticks
csswizardry
13
1.1k
Transcript
ΧελϜϑΟʔϧυͷσʔλΛ දܗࣜͰ1%'ʹॻ͖ग़͢ํ๏
URL https:/ /suzulabo.com MAIL
[email protected]
OHTA KONATSU WEB CREATOR &
FRONT END ENGINEER / a-blog cms 3
͓ͳ͢͠Δ͜ͱ wࣄྫհ wQEGNBLFKTͱ wBCMPHDNTͰQEGNBLFKTΛ͏ʹ w·ͱΊ
ࣄྫհ
ࣄྫհ NPO a-blog cms A B Z
PDF ࣄྫհ ͕୲ͨ͜͠ͱ ࢲ
PDF PDF 2 ࣄྫհ ػೳཁ݅
None
None
団体情報ガイドブック確認票 登録番号:29 グループ名 さんぷるぐるーぷ サンプルグループ 所管施設 市民活動分野 生涯学習分野 教育、キャリアアップ、レクリエーション、その他(あそび・ス ポーツ)
ふりがな やまだ たろう ふりがな やまだ たろう 代表者名 (ガイドブックへの情報公開 可) 山田 太郎 連絡先窓口担当者 (ガイドブックへの情報公開 可) 山田 太郎 連絡先 [事務所] 電話 :000-000-0000 (ガイドブックへの情報公開 可) 携帯電話:000-0000-0000 (ガイドブックへの情報公開 不可) FAX :000-000-0000 (ガイドブックへの情報公開 不可) メールアドレス:
[email protected]
(ガイドブックへの情報公開 可) 連絡先住所 [代表者] (ガイドブックへの情報公開 不可) 〒 460-0000 愛知県名古屋市中区 活動開始年 会員数 10人 活動日時 毎月第2土曜日 12:00から 活動場所 ベースキャンプ名古屋 会費・入会金 2,000円 活動内容 Webサイト制作の基礎を学べる子ども向けのイベントを開催しています。 代表者・会員のコメントなど サイト制作の楽しさをたくさんの子に知ってもらえるよう活動してまいります。 ホームページアドレス https://example.com 所属団体 WEBで情報公開 公開可 登録番号:29 グループ名 さんぷるぐるーぷ サンプルグループ 所管施設 市民活動分野 生涯学習分野 教育、キャリアアップ、レクリエーション、その他(あそび・ス ポーツ) 活動開始年 会員数 10人 活動日時 毎月第2土曜日 12:00から 活動場所 ベースキャンプ名古屋 会費・入会金 2,000円 活動内容 Webサイト制作の基礎を学べる子ども向けのイベントを開催しています。 代表者・会員のコメントなど サイト制作の楽しさをたくさんの子に知ってもらえるよう活動してまいります。 ホームページアドレス https://example.com 所属団体 代表者名 ふりがな やまだ たろう 山田 太郎 連絡先窓口担当者 ふりがな やまだ たろう 山田 太郎 連絡先 [事務所] 電話 :000-000-0000 携帯電話: FAX : メールアドレス:
[email protected]
連絡先住所 [代表者] 〒 ֬ೝ༻ҹ ΨΠυϒοΫ
pdfmake.js (http://pdfmake.org/)
QEGNBLFKTͱ
/ PDF QEGNBLFKTͱ
QEGNBLFKTͱ JavaScript QEGNBLFͷ͍͍ͱ͜Ζᶃ const docDefinition = { content: [{ table:
{ body : [ ['⾒出し', '⾒出し', '⾒出し'], [{text: '⽂章', bold: true}, '⽂章', '⽂章'] ] } }] }; pdfMake.createPDF(docDefinition).open();
QEGNBLFKTͱ (table) (columns) QEGNBLFͷ͍͍ͱ͜Ζᶄ const docDefinition = { content: [{
table: { widths: ['*', 'auto', 100], body : [ ['⽂章', '⽂章', ‘⽂章'] ] } }] }; pdfMake.createPDF(docDefinition).open();
QEGNBLFKTͱ rowSpan, colSpan QEGNBLFͷ͍͍ͱ͜Ζᶅ const docDefinition = { content: [{
table: { widths: [100, 100, 100], body : [ [{text:'⽂章', rowSpan: 2}, '⽂章', '⽂章'], ['', {text:'⽂章', colSpan: 2}, ''] ] } }] }; pdfMake.createPDF(docDefinition).open();
QEGNBLFKTͱ QEGNBLFͷ͍͍ͱ͜Ζᶆ const docDefinition = { content: [{ table: {
widths: [100, 100, 100], body : [ [{text:'⽂章', style: ['sample']}, '⽂章', '⽂章'], ] } }], defaultStyle: {fontSize: 20}, styles: { sample: {color: 'red'} } }; pdfMake.createPDF(docDefinition).open();
QEGNBLFKTͱ ͪΐͬͱ೦ͳͱ͜Ζᶃ ‣ playground
QEGNBLFKTͱ padding border ( ) ͪΐͬͱ೦ͳͱ͜Ζᶄ layout: { paddingLeft: function
(i) { return 8; }, paddingRight: function (i) { return 8; }, paddingTop: function (i) { return 8; }, paddingBottom: function (i) { return 8; }, hLineWidth: function (i) { return 2; }, vLineStyle: function (i) { return {dash: {length: 4, space: 3}}; }, },
QEGNBLFKTͱ ͪΐͬͱ೦ͳͱ͜Ζᶅ Roboto ‣ VFS ‣ gulp, php, 3 ‣
VFS
vfs_fonts.js - base
QEGNBLFKTͱ base ͪΐͬͱ೦ͳͱ͜Ζᶆ ‣ VFS OK ‣ a-blog
cms content: [{ image: 'data:image/jpeg;base64,...encodedContent...', }]
BCMPHDNTͰ QEGNBLFΛ͏ʹ
BCMPHDNTͰQEGNBLFΛ͏ʹ <script src="js/lib/pdfmake.js"></script> <script src="js/lib/vfs_fonts.js"></script> <script> pdfMake.fonts = { Aozora:
{ normal: 'AozoraMinchoRegular.ttf', bold: 'AozoraMinchoMedium.ttf' } }; const docDefinition = { content: [{ table: { // ⽣成するテーブルの内容 } }], defaultStyle: { font: 'Aozora' } }; pdfMake.createPDF(docDefinition).download(); </script> VFS
BCMPHDNTͰQEGNBLFΛ͏ʹ a-blog cms script
BCMPHDNTͰQEGNBLFΛ͏ʹ <script src="js/lib/pdfmake.js"></script> <script src="js/lib/vfs_fonts.js"></script> <script> pdfMake.fonts = { Aozora:
{ normal: 'AozoraMinchoRegular.ttf', bold: 'AozoraMinchoMedium.ttf' } }; const docDefinition = { content: [{ table: { // ⽣成するテーブルの内容 } }], defaultStyle: { font: 'Aozora' } }; pdfMake.createPDF(docDefinition).download(); </script>
pdfmake JS ... BCMPHDNTͰQEGNBLFΛ͏ʹ content: [{ table: { body
: [ <!-- BEGIN_MODULE Entry_Field --> [{text: '{hoge}', rowSpan: 2}, '{fuga}'], ['', {text: '{piyo}', bold: true}] <!-- END_MODULE Entry_Field --> ] } }] ???
BCMPHDNTͰQEGNBLFΛ͏ʹ content: [{ table: { body : [ <!-- BEGIN_MODULE
Entry_Field --> [\{text: '{hoge}', rowSpan: 2\}, '{fuga}'], ['', \{text: '{piyo}', bold: true\}] <!-- END_MODULE Entry_Field --> ] } }]
BCMPHDNTͰQEGNBLFΛ͏ʹ <!-- BEGIN_MODULE Entry_Field --> pdfMake.createPDF(docDefinition).download("{title}_guide.pdf"); <!-- END_MODULE Entry_Field -->
·ͱΊ ͍͍εΫϦϓτΛ͔ͭͬͯɺ BCMPHDNTΛͬͱָ͘͠ศརʹʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ