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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
68
「ここのアニメーション、おまかせで!」と言われたら / What is important for css animation
flour621
0
32
Other Decks in Programming
See All in Programming
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
CSC307 Lecture 05
javiergs
PRO
0
500
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
2026年 エンジニアリング自己学習法
yumechi
0
130
CSC307 Lecture 07
javiergs
PRO
0
550
Basic Architectures
denyspoltorak
0
670
AtCoder Conference 2025
shindannin
0
1.1k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
A Soul's Torment
seathinner
5
2.3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
160
Mind Mapping
helmedeiros
PRO
0
81
Amusing Abliteration
ianozsvald
0
100
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
99
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Code Reviewing Like a Champion
maltzj
527
40k
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Λͬͱָ͘͠ศརʹʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ