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
220
カスタムフィールドのデータを表形式で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
67
「ここのアニメーション、おまかせで!」と言われたら / What is important for css animation
flour621
0
32
Other Decks in Programming
See All in Programming
PHPライセンス変更の議論を通じて学ぶOSSライセンスの基礎
matsuo_atsushi
0
170
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
110
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
32
14k
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
170
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
580
Honoを技術選定したAI要件定義プラットフォームAcsimでの意思決定
codenote
0
250
CloudflareのSandbox SDKを試してみた
syumai
0
180
Chart.jsで長い項目を表示するときのハマりどころ
yumechi
0
150
CloudNative Days Winter 2025: 一週間で作る低レイヤコンテナランタイム
ternbusty
7
1.7k
「正規表現をつくる」をつくる / make "make regex"
makenowjust
1
730
Atomics APIを知る / Understanding Atomics API
ssssota
1
190
[SF Ruby Conf 2025] Rails X
palkan
0
340
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Fireside Chat
paigeccino
41
3.7k
Automating Front-end Workflow
addyosmani
1371
200k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Side Projects
sachag
455
43k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
The Language of Interfaces
destraynor
162
25k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Transcript
ΧελϜϑΟʔϧυͷσʔλΛ දܗࣜͰ1%'ʹॻ͖ग़͢ํ๏
URL https:/ /suzulabo.com MAIL konatsu@suzulabo.com 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 (ガイドブックへの情報公開 不可) メールアドレス:contact@example.com (ガイドブックへの情報公開 可) 連絡先住所 [代表者] (ガイドブックへの情報公開 不可) 〒 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 : メールアドレス:contact@example.com 連絡先住所 [代表者] 〒 ֬ೝ༻ҹ ΨΠυϒοΫ
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Λͬͱָ͘͠ศརʹʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ