scholer/pptx-downsizer

Suggestion: Remove unused slide layouts

Opened this issue · 0 comments

chahu commented

I have a script that depends on python-pptx that removes unused slide layouts. This can amount to a huge size reduction in some cases. Would be cool if this functionality was included in this project.

See below standalone python script to get an idea:

#!/usr/bin/env python3

import argparse
import collections.abc  # Python 3.10 workaround https://github.com/scanny/python-pptx/issues/762
from pptx import Presentation

parser = argparse.ArgumentParser(description="Remove unused pptx slide layouts")
parser.add_argument("filename")
parser.add_argument("-o", "--output", required=True, help="Where to save the output")
args = parser.parse_args()

count = 0
prs = Presentation(args.filename)
for slide_layout in prs.slide_layouts:
    if not slide_layout.used_by_slides:
        print(f"Removing unused slide layout:  {slide_layout.name}")
        prs.slide_layouts.remove(slide_layout)
        count += 1

if count == 0:
    print("All slide layouts in use. Nothing to do.")
else:
    prs.save(args.output)