Skip to content

Commit 358eb3c

Browse files
committed
feat: add custom slide master example with title and content layouts
1 parent 5aa1dba commit 358eb3c

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import datetime
2+
3+
import tppt
4+
5+
6+
class CustomTitleSlideLayout(tppt.SlideLayout):
7+
title: tppt.Placeholder[str]
8+
subtitle: tppt.Placeholder[str | None] = None
9+
date: tppt.Placeholder[datetime.date | None] = None
10+
footer: tppt.Placeholder[str | None] = None
11+
12+
13+
class CustomTitleAndContentSlideLayout(tppt.SlideLayout):
14+
title: tppt.Placeholder[str]
15+
content: tppt.Placeholder[str]
16+
date: tppt.Placeholder[datetime.date | None] = None
17+
footer: tppt.Placeholder[str | None] = None
18+
19+
20+
@tppt.slide_master("custom_slide_master_base.pptx")
21+
class CustomSlideMaster(tppt.SlideMaster):
22+
TitleLayout: tppt.Layout[CustomTitleSlideLayout]
23+
TitleAndContentLayout: tppt.Layout[CustomTitleAndContentSlideLayout]
24+
25+
26+
presentation = (
27+
tppt.Presentation.builder(CustomSlideMaster)
28+
.slide(
29+
lambda slide: slide.TitleLayout(
30+
title="Custom Master Title",
31+
)
32+
)
33+
.slide(
34+
lambda slide: slide.TitleAndContentLayout(
35+
title="Custom Title",
36+
content="Custom Content",
37+
)
38+
.builder()
39+
.text(
40+
"Custom Text",
41+
top=(1, "in"),
42+
left=(2, "in"),
43+
width=(3, "in"),
44+
height=(4, "in"),
45+
)
46+
)
47+
.build()
48+
.save("custom_slide_master.pptx")
49+
)

0 commit comments

Comments
 (0)