WolfPPT - Documentation

# How do I render PPTX to PDF and PNG with WolfPPT Commercial?

WolfPPT native PDF and PNG rendering requires Commercial, not the public Community package alone. Run render-native with explicit font files and a new output directory; this is WolfPPT layout, not Microsoft PowerPoint GUI rendering parity.

Last updated: November 9, 2026.

[WolfPPT documentation](https://wolfppt.com/docs)

## Choose the installed rendering surface

The WolfPPT Commercial add-on enables the wolfppt-harness render-native command. The separate Wolf Runtime distribution exposes wolf render with different syntax and output reports. This page documents the Commercial command only, and links to the PDF task guide for the Runtime alternative. Do not install Community and expect either an authenticated add-on or the wolf executable to appear.

The Python wrapper below is complete but requires a provisioned Commercial environment, an existing PPTX, and font assets that you are entitled to use. Save it as render.py and supply the arguments shown in its comment. It was checked against the native command parser and the add-on PDF/PNG test; it was not run against an installed Commercial package during this documentation change.

## Admit the fonts the deck uses

Pass --font once for each required family and style, using FAMILY\[:STYLE\]=PATH. A regular Calibri asset does not by itself admit the bold style. The command accepts repeated font entries, so the wrapper forwards each --font argument unchanged. Choose the files that correspond to the deck typography rather than relying on a converter to find an arbitrary platform substitute.

The native source refuses missing fonts unless an explicit fallback policy is selected. The sample does not select a fallback. That makes the font boundary visible instead of silently changing the design. A deck may also require glyphs missing from an otherwise valid family file. Having a font path on disk is therefore a prerequisite, not an independent proof that the complete input is renderable.

## Complete example

```
import argparse
import subprocess

parser = argparse.ArgumentParser()
parser.add_argument("source")
parser.add_argument("outdir")
parser.add_argument("--font", action="append", required=True)
args = parser.parse_args()
command = [
    "wolfppt-harness", "render-native", "--source", args.source,
    "--output-dir", args.outdir, "--format", "pdf", "--format", "png",
    "--dpi", "96", "--supersample", "2",
]
for font in args.font:
    command.extend(["--font", font])
subprocess.run(command, check=True)
# Run: python render.py deck.pptx rendered --font 'Calibri=/path/to/calibri.ttf'
# Add --font 'Calibri:bold=/path/to/calibrib.ttf' when the deck uses bold.
```

## Select formats and an absent output directory

The wrapper repeats --format pdf and --format png, so the requested output set is explicit. DPI controls raster resolution; supersampling controls the intermediate raster sampling factor before downscaling. Their native defaults are 96 and two respectively. Neither parameter establishes layout equivalence with another renderer, and increasing either value does not make unsupported content supported.

The native publisher stages the complete output set in a sibling directory and publishes with a no-replace directory rename. Choose an output directory that does not exist. Existing outputs are not replaced, including a destination that appears while rendering is in progress. This is the Commercial native output contract, not a statement that ordinary facade save or the Runtime route shares the same filenames and receipts.

## Read the output boundary before using the documents

The native renderer writes a render-receipt.json by default. Review its diagnostics and the generated files for the actual deck rather than treating a PDF extension as a fidelity guarantee. Unsupported consumed markup can refuse rendering before output publication; some declared effects may instead appear as named omissions. Preserve those distinctions in application logs and acceptance criteria.

This renderer uses its own layout and supported DrawingML interpretation. Static PDF and PNG output is not a presentation-player simulation. It does not establish that transitions, animation timing, external applications, or embedded workbook calculation will behave as PowerPoint would. Keep the original editable presentation, qualify representative pages, and review fonts and omissions before publishing rendered documents to readers.

## Evaluation boundary

When integrating the wrapper, retain the command arguments and output diagnostics without leaking protected document text or credential material into public logs. A successful subprocess return means the selected command completed; whether the rendered documents satisfy the intended review or publication requirement is a separate acceptance decision.

## Parameters and contracts

| Option | Meaning |
| --- | --- |
| `--source` | Existing PPTX input. |
| `--output-dir` | Absent directory for the complete output set. |
| `--format` | Repeat to select pdf and png in this example. |
| `--font` | Repeat FAMILY\[:STYLE\]=PATH for admitted local assets. |
| `--dpi` | Positive raster resolution; default 96. |
| `--supersample` | Integer at least one; default two. |

## What it does not do

- Community alone cannot run this workflow.
- The example is source-checked, not an executed Commercial render result.
- No Microsoft PowerPoint GUI parity or automatic font substitution is claimed.
- Rendering uses supported cached chart content, not embedded workbook recalculation.

## Get WolfPPT Commercial

WolfPPT Commercial is an organization-scoped subscription at $500 per year or $50 per month for one legal organization, not per developer. The public MIT Community package is on public PyPI. WolfPPT Commercial installs the wolfppt-pro add-on from the authenticated WolfPPT package index with a per-purchase credential, issued on the checkout success page after payment and reissued through https://wolfxl.com/recover.

```
pip install wolfppt-pro --index-url https://packages.wolfxl.com/wolfppt/simple/
```

The public WolfPPT Community release is MIT-licensed and free, including commercial use. WolfPPT Commercial does not change those rights.

[See pricing](https://wolfxl.com/pricing)

### Related tasks

- [Update text in an existing PowerPoint deck with Python](https://wolfppt.com/update-pptx-python)
- [Update a table in an existing PowerPoint deck with Python](https://wolfppt.com/update-pptx-table-python)
- [Update chart data in an existing PowerPoint deck with Python](https://wolfppt.com/update-pptx-chart-python)
- [Convert PPTX to PDF in Python without PowerPoint or LibreOffice](https://wolfppt.com/convert-pptx-to-pdf-python): Wolf Runtime workflow (commercial or evaluation, not in the pip package)
- [python-pptx limitations, and an alternative for editing existing PowerPoint decks](https://wolfppt.com/python-pptx-alternative)
- [Copy slides from one PowerPoint deck to another in Python without losing theme fonts](https://wolfppt.com/copy-slides-pptx-python)
- [Which Python library supports programmatic pitch deck generation with native charts and shapes?](https://wolfppt.com/generate-pitch-deck-python)
- [How can Python generate high-resolution PPTX slide thumbnails without LibreOffice?](https://wolfppt.com/pptx-slide-thumbnails-python)
- [How do I fix python-pptx placeholder KeyError when editing slide master layouts?](https://wolfppt.com/python-pptx-placeholder-keyerror)
- [How do I fix LibreOffice crashing during PPTX-to-PDF conversion in headless Docker?](https://wolfppt.com/libreoffice-pptx-to-pdf-docker)

## Related documentation and tasks

- [How do I install WolfPPT Community, Commercial, or Wolf Runtime?](https://wolfppt.com/docs/installation)
- [How do I refresh a PPTX report and handle WolfPPT refusals?](https://wolfppt.com/docs/reports-refusals)
- [How do I migrate python-pptx code to WolfPPT without assuming full compatibility?](https://wolfppt.com/docs/migration-limits)
- [Convert PPTX to PDF](https://wolfppt.com/convert-pptx-to-pdf-python)
- [Update PPTX chart data](https://wolfppt.com/update-pptx-chart-python)
