PowerPoint Template for python
Project description
PPTT
PowerPoint Template for python
Installation
$ pip install PPTT
✨🍰✨
How to use it?
make master pptx
master.pptx preview
make page!
create slide.json
like this
{
"pages": [
{
"slide_pos": 1,
"contents": {
"title": {
"text": "PPTT"
},
"subtitle": {
"text": "you don't need to config design"
}
}
},
{
"slide_pos": 2,
"contents": {
"title": {
"text": "Replace Table Data"
},
"table": {
"table": {
"data_type": "key_value",
"keys": [
"Name",
"Age",
{
"name": "Hobby",
"data_key": "hobby"
},
{
"name": {
"value": "Language",
"font": {
"bold": true,
"italic": true,
"underline": true,
"color": "#00F900"
}
},
"data_key": "language"
}
],
"data": [
{"Name": "sinsky", "Age": 28, "hobby": "programming", "language": "korean"},
{"Name": "summer", "Age": 4, "hobby": "reading", "language": "korean"},
{"Name": "emmit", "Age": 30, "hobby": "lego", "language": "english"},
{"Name": "agent", "Age": 20, "hobby": "hiding", "language": "english"},
{
"Name": "python",
"Age": 38,
"hobby": "making",
"language": {
"value": "python",
"font": {
"bold": true,
"color": "#FFC107"
}
}
}
]
}
}
}
},
{
"slide_pos": 3,
"contents": {
"title": {
"text": "Replace Chart Data"
},
"chart": {
"chart": {
"data_type": "category_data",
"title": "this is new chart",
"categories": ["list", "dict", "str"],
"series": {
"series 1": [5, 13, 8]
}
}
}
}
},
{
"slide_pos": 4,
"contents": {
"body": {
"text": "support multi-line\ntext\nlike this"
},
"table": {
"table": {
"data_type": "raw",
"data": [
[null, "1Q", {"value": "2Q", "font": {"bold": true}}],
["Apple", 10, {"value": 20, "font": {"italic": true}}],
["Google", 8, {"value": 8, "font": {"underline": true}}],
["AWS", 20, {"value": 15, "font": {"color": "00F900"}}]
]
}
},
"chart": {
"chart": {
"data_type": "category_data",
"categories": ["Apple", "Google", "AWS"],
"series": {
"1Q": [10, 8, 20],
"2Q": [20, 6, 15]
}
}
}
}
}
]
}
make ppt!
pptt make_ppt master.pptx clone.pptx -i slide.json
clone.pptx preview
Python API
make stub file
pptt make_stub master.pptx -o slide_stubs.py
make ppt as code
import os
from PPTT.ppt import make_ppt
from PPTT.type import TextData, KeyValueData, TableData, KVKey, FontData, ChartCategoryData, \
CategoryData, TextStyle, RawData
from slide_stubs import \
Slide1 as CoverSlide, Slide1Content as CoverSlideContent, \
Slide2 as TableSlide, Slide2Content as TableSlideContent, \
Slide3 as ChartSlide, Slide3Content as ChartSlideContent, \
Slide4 as ComboSlide, Slide4Content as ComboSlideContent
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
if __name__ == '__main__':
slieds = []
# slide 1
cover_content = CoverSlideContent(
title=TextData(text='PPTT'),
subtitle=TextData(text="you don't need to config design")
)
slieds.append(CoverSlide(contents=cover_content))
python_font = FontData(bold=True, color="#FFC107")
language_font = FontData(bold=True, italic=True, underline=True, color="#00F900")
# slide 2
table_content = TableSlideContent(
title=TextData(text="Replace Table Data"),
table=TableData(table=KeyValueData(
keys=[
'Name',
"Age",
KVKey(name='Hobby', data_key="hobby"),
KVKey(name=TextStyle(value="Language", font=language_font), data_key="language")
],
data=[
{"Name": "sinsky", "Age": 28, "hobby": "programming", "language": "korean"},
{"Name": "summer", "Age": 4, "hobby": "reading", "language": "korean"},
{"Name": "emmit", "Age": 30, "hobby": "lego", "language": "english"},
{"Name": "agent", "Age": 20, "hobby": "hiding", "language": "english"},
{"Name": "python", "Age": 38, "hobby": "making",
"language": TextStyle(value="python", font=python_font)
}
]
)
)
)
slieds.append(TableSlide(contents=table_content))
# slide3
chart_data = CategoryData(
title="this is new chart",
categories=['list', 'dict', 'str'],
series={
"series 1": [5, 13, 8]
}
)
chart_content = ChartSlideContent(
title=TextData(text="Replace Chart Data"),
chart=ChartCategoryData(chart_data)
)
slieds.append(ChartSlide(contents=chart_content))
# slide4
table_raw_data = RawData(data=[
[None, "1Q", TextStyle("2Q", font=FontData(bold=True))],
["Apple", 10, TextStyle(20, font=FontData(italic=True))],
["Google", 8, TextStyle(8, font=FontData(underline=True))],
["AWS", 20, TextStyle(15, font=FontData(color="#00F900"))]
])
chart_category_data = CategoryData(
categories=["Apple", "Google", "AWS"],
series={
"1Q": [10, 8, 20],
"2Q": [20, 6, 15]
}
)
combo_content = ComboSlideContent()
combo_content.body = TextData("support multi-line\ntext\nlike this")
combo_content.table = TableData(table_raw_data)
combo_content.chart = ChartCategoryData(chart_category_data)
slieds.append(ComboSlide(contents=combo_content))
master_file = os.path.join(BASE_DIR, 'master.pptx')
export_file = os.path.join(BASE_DIR, 'clone.pptx')
make_ppt(master_file, export_file, pages=slieds)
test
. ./tests.sh
Change Logs
- 0.0.1
- add cli version
- cli usecase example
- 0.0.2
- support python api
- 0.0.3
- remove feature : I will refactoring ASAP
- python api feature
- template mode
- add replace mode
- update simple usecase example
- support table data replace
- support data type : raw, key_value
- support chart data replace
- support data type : category_data
- remove feature : I will refactoring ASAP
- 0.0.4
- New Feature
- support all chart data tye : xy_data, bubble_data
- Docs
- add chart example
- New Feature
- 0.0.5
- Bug Fix
- fix table replace data dose not reset issue
- Bug Fix
- 0.0.6
- New Feature
- change text font style #10
- New Feature
- 0.0.7
- New Feature
- make slide stub for python api
- New Feature
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
PPTT-0.0.7.tar.gz
(16.5 kB
view details)
Built Distribution
PPTT-0.0.7-py3-none-any.whl
(21.0 kB
view details)
File details
Details for the file PPTT-0.0.7.tar.gz
.
File metadata
- Download URL: PPTT-0.0.7.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0d80de1dd6805ff011a20faa98d2e7424833b6c84fb930f8351218357a0e359 |
|
MD5 | 79f62916bc21ed1fc664afb20da0081d |
|
BLAKE2b-256 | da532b8414f6f1c6149381055867f40fe23885e82e098ec94d58e728c567021d |
File details
Details for the file PPTT-0.0.7-py3-none-any.whl
.
File metadata
- Download URL: PPTT-0.0.7-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2de61481b243950f3ab7055fd82b91de0350412731d5f821651bbe5e6d19cecf |
|
MD5 | ec92aae6223677d24528de54f78e550e |
|
BLAKE2b-256 | f18ab3130427acc1376cdb1f1dbccd26a942fb894837a42daba06fdf0262aa52 |