概要
from pptx import Presentation from pptx.enum.shapes import MSO_SHAPE_TYPE if __name__ == '__main__': ppt = Presentation("【.pptx のファイルパス】") for slide in ppt.slides: for shape in slide.shapes: if shape.shape_type == MSO_SHAPE_TYPE.PICTURE: print(shape.image.filename)
最初は、上記のように shape.image.filename
を使えば
.pptx に含まれているすべての画像ファイルの名前を取得できるかと思ったのですが、
どの画像ファイルも「image.png」が返ってきてしまって
正しいファイル名が取得できませんでした
.pptx を .zip に変更して展開して、
各スライドの .xml に画像ファイル名が記述されていないか確認したところ、
.xml には画像ファイルの名前が保存されていました
なんとかこのパラメータを python-pptx で取得できないか調べてみたら
上記のサイト様でやり方が紹介されていました
from pptx import Presentation from pptx.enum.shapes import MSO_SHAPE_TYPE if __name__ == '__main__': ppt = Presentation("【.pptx のファイルパス】") for slide in ppt.slides: for shape in slide.shapes: if shape.shape_type == MSO_SHAPE_TYPE.PICTURE: print(shape._pic.nvPicPr.cNvPr.get('descr'))
自分の環境ではこのコードで .pptx のすべてのスライドに存在する
画像ファイルの名前を取得できました