From 9a7553406beef499f64d220131ac02465f524ee1 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 1 Nov 2020 21:39:34 +0800 Subject: import(life): The mate has deleted the bland target slide of hyperlink in pptx and he asked me to write a script to add it back. --- works/life/question-pptx/.gitignore | 5 ++--- works/life/question-pptx/add-hyperlink.py | 24 ++++++++++++++++++++++++ works/life/question-pptx/main.py | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 works/life/question-pptx/add-hyperlink.py diff --git a/works/life/question-pptx/.gitignore b/works/life/question-pptx/.gitignore index 1400b46..8c198b1 100644 --- a/works/life/question-pptx/.gitignore +++ b/works/life/question-pptx/.gitignore @@ -1,5 +1,4 @@ -test.pptx real-choose.txt real-judge.txt -*.pptx -question-pptx.zip +**/*.pptx +**/*.zip diff --git a/works/life/question-pptx/add-hyperlink.py b/works/life/question-pptx/add-hyperlink.py new file mode 100644 index 0000000..b427bdd --- /dev/null +++ b/works/life/question-pptx/add-hyperlink.py @@ -0,0 +1,24 @@ +import pptx +import sys +import os + +fn = sys.argv[1] + +presentation: pptx.presentation.Presentation = pptx.Presentation(fn) + +target_slide = presentation.slides.add_slide(presentation.slide_layouts[6]) + +slide: pptx.slide.Slide +for slide in presentation.slides: + for shape in slide.shapes: + try: + if isinstance(shape, pptx.shapes.autoshape.Shape) and shape.auto_shape_type == pptx.enum.shapes.MSO_SHAPE.OVAL: + shape.click_action.target_slide = target_slide + except: + pass +try: + os.mkdir('output') +except: + pass + +presentation.save(os.path.join('output', os.path.basename(fn))) diff --git a/works/life/question-pptx/main.py b/works/life/question-pptx/main.py index 6c4e9bb..ee278d4 100644 --- a/works/life/question-pptx/main.py +++ b/works/life/question-pptx/main.py @@ -64,7 +64,7 @@ presentation: pptx.presentation.Presentation = pptx.Presentation() buttons: Iterable[pptx.shapes.autoshape.Shape] = [] for question in questions: - slide: pptx.slide.Slide = presentation.slides.add_slide( + slide: pptx.slide.Slide = c.add_slide( presentation.slide_layouts[6]) title = slide.shapes.add_textbox(Pt(20), Pt(40), Pt(680), Pt(50)) -- cgit v1.2.3