scanny / python-pptx

Create Open XML PowerPoint documents in Python
MIT License
2.26k stars 496 forks source link

Save Slide as Image #963

Open shllgtca opened 3 months ago

shllgtca commented 3 months ago

Hi All!

This library is a great contribution for the community, tks for that!

Is there a way how to save a slide as an image?

kind regards!

MartinPacker commented 3 months ago

An easy one to answer - but not the answer you want: python-pptx doesn't render the slides so can't do this. You'd have to automate a screen grab - on whichever platform you're on.

scanny commented 3 months ago

@shllgtca I believe you can do this with LibreOffice. It's not pretty; the LibreOffice application needs to be installed and it actually loads as though you were using it to do the save operation by hand, but it does work. Takes a fair amount of time. Probably not a problem for onesy-twosies on your own machine but can be problematic if you're running it in production in the cloud or whatever.

I can't say I've tried it for this exact purpose; I've used it for DOC -> DOCX conversions and actually used it in a production system running in the cloud on Linux. But like I say, it's ugly and slow. Much better than not being able to do it though :)

Installing LibreOffice makes the soffice (command-line) command available. I believe you'll have to convert the PPTX to PDF and then use Ghostscript or something for PDF -> PNG or whatever. This SO question has more, others on search I expect: https://stackoverflow.com/questions/21523267/how-to-convert-pptx-files-to-jpg-or-png-for-each-slide-on-linux

So this process actually has nothing to do with python-pptx specifically, it works the same no matter how the PPTX got produced. And what you're running is essentially a command-line script, from within Python if you want or using a shell script or whatever suits.