[python-pptx] python으로 PowerPoint 글꼴 정보를 csv로 출력
배경
PowerPoint 문서 Review에서 일부 글꼴이 잘못되었다고 지적했습니다.
100페이지 이상의 슬라이드의 어디의 폰트가 다른가를, 하나씩 체크해 수정….
목검으로 하고 싶지 않았고, 앞으로도 같은 작업을 할 가능성이 있으므로 효율적으로 할 수 없을까… 라고 생각했습니다.
python-pptx
지금의 시대 파이썬으로 할 수 없는 일은 없어!
살펴보면 python-pptx에서 python에서 PowerPoint 파일을 조작 할 수 있음을 알았습니다.
공식 페이지 : python-pptx
객체 이미지
Qiita의 위대한 선구자들의 기사를 참고로 공식 Getting Start를 조금 만졌습니다.
어쩐지 이미지가 붙었으므로, 아래에 Dump 합니다.
(잘못되면 지적을 부탁드립니다…)
전체 부감도
Presentation > slides[] > shapes[] > text_frame.paragraphs[] > runs[]
shapes[] 와 슬라이드의 대응
slide 는 그 슬라이드내의 객체를 shapes[] 에 배열의 형태로 가지고 있다.
text_frame.paragraphs[] 와 슬라이드 대응
shape 안에서, 문자를 가지는 것(?)은 text_frame.paragraphs[] 를 가질 수 있다.
자주 shapes[n].paragraphs[m] 로 액세스하려고 하는데 오류가 있었습니다…
runs[]와 슬라이드 대응
1문자마다 폰트를 바꿀 수 있습니다만, 어떻게 가지고 있는 것일까…라고, 전전부터 의문이었습니다.
run 이라는 단위로 가지고 있는 것 같아, 각각에 폰트를 설정할 수 있습니다.
만든 것
모든 슬라이드의 모든 paragraphs와 runs를 csv로 dump.
TARGET_FILE_PATH 에는 대상의 powerpoint 파일에의 패스를, OUTPUT_FILE_PATH 에는 출력의 csv 의 파일에의 패스를 설정.
python-pptx.pyfrom pptx import Presentation
from pptx.util import Pt
import csv
TARGET_FILE_PATH = './targetFile/targetFile.pptx'
OUTPUT_FILE_PATH = './output.csv'
FONT_SIZE_DIVESER = 12700
# ["pptxFile名","slide番号","object番号","run番号","オブジェクトタイプ"," font.name"," font.size"," text"]
def export_slide_fonts_and_text():
outputArray = []
outputArray.append(["pptxFile名","slide番号","object番号","paragraph番号","run番号","オブジェクトタイプ"," font.name"," font.size"," text"])
# ppt file の読み込み
prs = Presentation(TARGET_FILE_PATH)
slide_number = 0
# スライドの読み込み
for slide in prs.slides:
shape_number = 0
# shape ごとに処理
for shape in slide.shapes:
if not shape.has_text_frame:
shape_number = shape_number + 1
continue
paragraph_number = 0
# paragraph の段階で一旦出力
for paragraph in shape.text_frame.paragraphs:
if(paragraph.font.size != None):
fontSize = paragraph.font.size/FONT_SIZE_DIVESER
else:
fontSize = None
outputArray.append([TARGET_FILE_PATH, slide_number, shape_number,paragraph_number, "-","paragraph", str(paragraph.font.name), str(fontSize), paragraph.text])
run_number = 0
# runを各々出力
for run in paragraph.runs:
if(run.font.size != None):
fontSize = run.font.size/FONT_SIZE_DIVESER
else:
fontSize = None
outputArray.append([TARGET_FILE_PATH, slide_number, shape_number,paragraph_number, run_number, "run", str(run.font.name), str(fontSize), run.text])
run_number = run_number + 1
paragraph_number = paragraph_number + 1
shape_number = shape_number + 1
slide_number = slide_number +1
# 書き込み
with open(OUTPUT_FILE_PATH, 'w', encoding="shift-jis") as f:
wirter = csv.writer(f, lineterminator='\n', quoting=csv.QUOTE_ALL)
wirter.writerows(outputArray)
if __name__ == "__main__":
export_slide_fonts_and_text()
출력된 것을 조금 가공
csv 로 출력된 것을 Excel 에 붙여 색을 붙여 본 것이 아래와 같습니다.
대략입니다만, 하고 싶은 일이 되어 있을 것 같은 느낌입니다!
ToBe
기본값을 가져옵니다.
위의 Excel에서 볼 수 있듯이 글꼴 이름과 글꼴 크기가 "None"인 경우가 많습니다.
값이 설정되어 있지 않은 경우 디폴트의 값을 참조한다고 합니다.
placeholder 에 액세스하는 것으로 취득할 수 있을 것 같습니다만… 좀 더 조사해 보고 싶습니다.
참고로 해 주신 선구자님
감사합니다…
압도적 감사 ...!
python-pptx 요약
python-pptx로 리포팅 자동화
[Python] 폭속으로 보고 파와포를 생성!
파이썬을 이용한 리포트의 자동 작성【PowerPoint】【python-pptx】
htps : // 이 m/코로_440/이고 ms/22에 8539다 465686496d3
Reference
이 문제에 관하여([python-pptx] python으로 PowerPoint 글꼴 정보를 csv로 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kurokurokurotti/items/b9f0c7fe181bd0c8f85d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
지금의 시대 파이썬으로 할 수 없는 일은 없어!
살펴보면 python-pptx에서 python에서 PowerPoint 파일을 조작 할 수 있음을 알았습니다.
공식 페이지 : python-pptx
객체 이미지
Qiita의 위대한 선구자들의 기사를 참고로 공식 Getting Start를 조금 만졌습니다.
어쩐지 이미지가 붙었으므로, 아래에 Dump 합니다.
(잘못되면 지적을 부탁드립니다…)
전체 부감도
Presentation > slides[] > shapes[] > text_frame.paragraphs[] > runs[]
shapes[] 와 슬라이드의 대응
slide 는 그 슬라이드내의 객체를 shapes[] 에 배열의 형태로 가지고 있다.
text_frame.paragraphs[] 와 슬라이드 대응
shape 안에서, 문자를 가지는 것(?)은 text_frame.paragraphs[] 를 가질 수 있다.
자주 shapes[n].paragraphs[m] 로 액세스하려고 하는데 오류가 있었습니다…
runs[]와 슬라이드 대응
1문자마다 폰트를 바꿀 수 있습니다만, 어떻게 가지고 있는 것일까…라고, 전전부터 의문이었습니다.
run 이라는 단위로 가지고 있는 것 같아, 각각에 폰트를 설정할 수 있습니다.
만든 것
모든 슬라이드의 모든 paragraphs와 runs를 csv로 dump.
TARGET_FILE_PATH 에는 대상의 powerpoint 파일에의 패스를, OUTPUT_FILE_PATH 에는 출력의 csv 의 파일에의 패스를 설정.
python-pptx.py
from pptx import Presentation
from pptx.util import Pt
import csv
TARGET_FILE_PATH = './targetFile/targetFile.pptx'
OUTPUT_FILE_PATH = './output.csv'
FONT_SIZE_DIVESER = 12700
# ["pptxFile名","slide番号","object番号","run番号","オブジェクトタイプ"," font.name"," font.size"," text"]
def export_slide_fonts_and_text():
outputArray = []
outputArray.append(["pptxFile名","slide番号","object番号","paragraph番号","run番号","オブジェクトタイプ"," font.name"," font.size"," text"])
# ppt file の読み込み
prs = Presentation(TARGET_FILE_PATH)
slide_number = 0
# スライドの読み込み
for slide in prs.slides:
shape_number = 0
# shape ごとに処理
for shape in slide.shapes:
if not shape.has_text_frame:
shape_number = shape_number + 1
continue
paragraph_number = 0
# paragraph の段階で一旦出力
for paragraph in shape.text_frame.paragraphs:
if(paragraph.font.size != None):
fontSize = paragraph.font.size/FONT_SIZE_DIVESER
else:
fontSize = None
outputArray.append([TARGET_FILE_PATH, slide_number, shape_number,paragraph_number, "-","paragraph", str(paragraph.font.name), str(fontSize), paragraph.text])
run_number = 0
# runを各々出力
for run in paragraph.runs:
if(run.font.size != None):
fontSize = run.font.size/FONT_SIZE_DIVESER
else:
fontSize = None
outputArray.append([TARGET_FILE_PATH, slide_number, shape_number,paragraph_number, run_number, "run", str(run.font.name), str(fontSize), run.text])
run_number = run_number + 1
paragraph_number = paragraph_number + 1
shape_number = shape_number + 1
slide_number = slide_number +1
# 書き込み
with open(OUTPUT_FILE_PATH, 'w', encoding="shift-jis") as f:
wirter = csv.writer(f, lineterminator='\n', quoting=csv.QUOTE_ALL)
wirter.writerows(outputArray)
if __name__ == "__main__":
export_slide_fonts_and_text()
출력된 것을 조금 가공
csv 로 출력된 것을 Excel 에 붙여 색을 붙여 본 것이 아래와 같습니다.
대략입니다만, 하고 싶은 일이 되어 있을 것 같은 느낌입니다!
ToBe
기본값을 가져옵니다.
위의 Excel에서 볼 수 있듯이 글꼴 이름과 글꼴 크기가 "None"인 경우가 많습니다.
값이 설정되어 있지 않은 경우 디폴트의 값을 참조한다고 합니다.
placeholder 에 액세스하는 것으로 취득할 수 있을 것 같습니다만… 좀 더 조사해 보고 싶습니다.
참고로 해 주신 선구자님
감사합니다…
압도적 감사 ...!
python-pptx 요약
python-pptx로 리포팅 자동화
[Python] 폭속으로 보고 파와포를 생성!
파이썬을 이용한 리포트의 자동 작성【PowerPoint】【python-pptx】
htps : // 이 m/코로_440/이고 ms/22에 8539다 465686496d3
Reference
이 문제에 관하여([python-pptx] python으로 PowerPoint 글꼴 정보를 csv로 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kurokurokurotti/items/b9f0c7fe181bd0c8f85d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([python-pptx] python으로 PowerPoint 글꼴 정보를 csv로 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kurokurokurotti/items/b9f0c7fe181bd0c8f85d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)