From e82e0c137271a0b4c2dee9375efdc43abc483004 Mon Sep 17 00:00:00 2001 From: Matthew Powers <121959840+C0dingMast3r@users.noreply.github.com> Date: Fri, 28 Feb 2025 02:21:51 -0500 Subject: [PATCH] Add Support For PPTX Shape Groups (Fix in code design to not miss out on slide content) (#331) * Adds support for Shape Groups * Update to Test PPtx for nested shape * This line was accidentally removed and is added back here --- .../markitdown/converters/_pptx_converter.py | 12 +++++++++++- .../markitdown/tests/test_files/test.pptx | Bin 124277 -> 127413 bytes 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/markitdown/src/markitdown/converters/_pptx_converter.py b/packages/markitdown/src/markitdown/converters/_pptx_converter.py index afb37a0..76c481a 100644 --- a/packages/markitdown/src/markitdown/converters/_pptx_converter.py +++ b/packages/markitdown/src/markitdown/converters/_pptx_converter.py @@ -64,7 +64,9 @@ class PptxConverter(HtmlConverter): md_content += f"\n\n\n" title = slide.shapes.title - for shape in slide.shapes: + + def get_shape_content(shape, **kwargs): + nonlocal md_content # Pictures if self._is_picture(shape): # https://github.com/scanny/python-pptx/pull/512#issuecomment-1713100069 @@ -134,6 +136,14 @@ class PptxConverter(HtmlConverter): else: md_content += shape.text + "\n" + # Group Shapes + if shape.shape_type == pptx.enum.shapes.MSO_SHAPE_TYPE.GROUP: + for subshape in shape.shapes: + get_shape_content(subshape, **kwargs) + + for shape in slide.shapes: + get_shape_content(shape, **kwargs) + md_content = md_content.strip() if slide.has_notes_slide: diff --git a/packages/markitdown/tests/test_files/test.pptx b/packages/markitdown/tests/test_files/test.pptx index ea1bbcb0f84f4e1007be35f2262173529215e484..e6d16f3cbb7836ff92b701b5fa61d92c165c50ab 100644 GIT binary patch delta 16933 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 BcVPek delta 14520 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