Skip to main content

Generate PowerPoint files from JSON with progressive HTML support.

Project description

PPTX HTML Generator

Python library for rendering rich HTML text into python-pptx text frames.

Primary API

Recommended: use TextFrame.html.

import pptx_html_generator  # installs TextFrame.html extension

shape.text_frame.html = "<p><b>Hello</b> world</p>"  # render HTML -> PPTX text frame
html = shape.text_frame.html                         # extract PPTX text frame -> HTML

Alternative (explicit function call): render_html_to_text_frame(...).

See:

  • API contract: docs/API.md

Features

  • JSON schema validation with useful error messages
  • Unit parsing for in, cm, pt, emu
  • Presentation generation with text box elements
  • HTML rich-text support:
    • Inline formatting: <b>, <strong>, <i>, <em>, <u>, <s>, <del>, <strike>, <code>, <sup>, <sub>
    • Links and styled spans: <a>, <span style>
    • Block structure: <p>, <br>, <ul>, <ol>, <li>, <h1>-<h6>
  • JSON style/default support:
    • font_name, font_size, font_color
    • alignment, vertical_anchor, word_wrap
  • CLI: json_in -> pptx_out
  • Optional TextFrame.html extension for ergonomic get/set HTML on text frames

Quick start

python -m pip install pptx-html-generator

Quick start: set HTML (TextFrame.html)

from pptx import Presentation
import pptx_html_generator  # installs TextFrame.html extension

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])  # blank
shape = slide.shapes.add_textbox(914400, 914400, 7315200, 1828800)
html = "<p><strong>Hello</strong> <em>world</em> with <a href='https://example.com'>a link</a>.</p>"

shape.text_frame.html = html
prs.save("example.pptx")

Quick start: get HTML (TextFrame.html)

from pptx import Presentation
import pptx_html_generator  # installs TextFrame.html extension

prs = Presentation("example.pptx")
slide = prs.slides[0]
shape = slide.shapes[0]

html = shape.text_frame.html
print(html)

Forward generation CLI (optional helper for JSON-driven generation):

pptx-html-generator generate examples/full_implementation.json output/full_implementation_demo.pptx

Alternative usage (render_html_to_text_frame):

from pptx import Presentation
from pptx_html_generator import render_html_to_text_frame

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6])
shape = slide.shapes.add_textbox(914400, 914400, 7315200, 1828800)
html = "<p><strong>Hello</strong> <em>world</em></p>"

render_html_to_text_frame(shape.text_frame, html)

Development setup:

python -m pip install -e ".[dev]"
pytest

CLI

Generate PPTX:

pptx-html-generator generate examples/full_implementation.json output/full_implementation_demo.pptx

List selectable elements on a slide (uses PowerPoint Selection Pane names):

pptx-html-generator list-elements output/full_implementation_demo.pptx --slide 1

Extract HTML from a selected shape by Selection Pane name:

pptx-html-generator extract-html output/full_implementation_demo.pptx --slide 1 --shape-name "BodyContent"

JSON shape (optional high-level API)

{
  "presentation": {
    "width": "13.333in",
    "height": "7.5in"
  },
  "slides": [
    {
      "layout": "blank",
      "elements": [
        {
          "type": "textbox",
          "position": {
            "left": "1in",
            "top": "1in",
            "width": "8in",
            "height": "2in"
          },
          "content": "Plain text content"
        }
      ]
    }
  ]
}

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

pptx_html_generator-0.2.0.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pptx_html_generator-0.2.0-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file pptx_html_generator-0.2.0.tar.gz.

File metadata

  • Download URL: pptx_html_generator-0.2.0.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for pptx_html_generator-0.2.0.tar.gz
Algorithm Hash digest
SHA256 818c4bb65884862ac052f2f87923a7b4a137846fdac0b817fb2aeb3b76d3cf01
MD5 30ef436c0dbb2fdf09de17c96047299c
BLAKE2b-256 cc6b0f38e8861806c8024834ecf4a85416c2f44a12b06fa407976f6b96d3d86a

See more details on using hashes here.

File details

Details for the file pptx_html_generator-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pptx_html_generator-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65c9c5f05294cffc8040a33317de5d4315202d01640aaaeb7234467536a02a99
MD5 b53c9dfe4184c38d72c3c99ea1d84f3c
BLAKE2b-256 f261353856b315953ac5d64f530974f3526676b1136741de7fab5e825abb09a9

See more details on using hashes here.

Supported by

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