回答編集履歴

1

質問の意図に沿って修正

2021/04/08 11:54

投稿

t_obara
t_obara

スコア5488

test CHANGED
@@ -23,3 +23,57 @@
23
23
  一つのファイルの場合、上記のコードでスライドレイアウト名称と参照されているスライドの数が列挙できます。
24
24
 
25
25
  これをベースにすれば、複数のスライドでも、スライドレイアウト名称でカウントアップしていけば、全体の参照カウントを行うことができるでしょう。
26
+
27
+
28
+
29
+ すいません、質問の意図を読み違えていました。
30
+
31
+ スライドマスターの名称はAPIとして用意されていないようなので、内部XMLから読み出す必要がありました。
32
+
33
+ 以下のような感じでいかがでしょう。
34
+
35
+
36
+
37
+ ```python
38
+
39
+ import pptx
40
+
41
+ from pptx.opc.constants import CONTENT_TYPE as CT, RELATIONSHIP_TYPE as RT
42
+
43
+ from pptx.opc.oxml import parse_xml
44
+
45
+
46
+
47
+ def count_slide_layouts(slide_layouts):
48
+
49
+ count = 0
50
+
51
+ for layout in slide_layouts:
52
+
53
+ uslides = layout.used_by_slides
54
+
55
+ count += len(uslides)
56
+
57
+
58
+
59
+ return count
60
+
61
+
62
+
63
+ prs = pptx.Presentation(pptx_file)
64
+
65
+
66
+
67
+ for master in prs.slide_masters:
68
+
69
+ mpart = master.part
70
+
71
+ tpart = mpart.part_related_by(RT.THEME)
72
+
73
+ xml = parse_xml(tpart.blob)
74
+
75
+ cnt = count_slide_layouts(master.slide_layouts)
76
+
77
+ print(f"{xml.attrib['name']}: {cnt}")
78
+
79
+ ```