Skip to main content

PowerPoint Template for python

Project description

PPTT

PyPI - Python Version PyPI PyPI download month codecov HitCount

PowerPoint Template for python

Installation

$ pip install PPTT
✨🍰✨

How to use it?

make master pptx

link how to make master pptx

master.pptx preview

master_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

master_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
  • 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
  • 0.0.4
    • New Feature
      • support all chart data tye : xy_data, bubble_data
    • Docs
  • 0.0.5
    • Bug Fix
      • fix table replace data dose not reset issue
  • 0.0.6
    • New Feature
      • change text font style #10
  • 0.0.7
    • New Feature
      • make slide stub for python api

Project details


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)

Uploaded Source

Built Distribution

PPTT-0.0.7-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

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

Hashes for PPTT-0.0.7.tar.gz
Algorithm Hash digest
SHA256 f0d80de1dd6805ff011a20faa98d2e7424833b6c84fb930f8351218357a0e359
MD5 79f62916bc21ed1fc664afb20da0081d
BLAKE2b-256 da532b8414f6f1c6149381055867f40fe23885e82e098ec94d58e728c567021d

See more details on using hashes here.

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

Hashes for PPTT-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 2de61481b243950f3ab7055fd82b91de0350412731d5f821651bbe5e6d19cecf
MD5 ec92aae6223677d24528de54f78e550e
BLAKE2b-256 f18ab3130427acc1376cdb1f1dbccd26a942fb894837a42daba06fdf0262aa52

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page