-
[python-pptx] 파이썬으로 ppt 파일 자동으로 만드는 방법 알아보기Python/파이썬 기초 2024. 10. 30. 18:29반응형
python-pptx를 이용해서 ppt 파일 자동으로 만들기
파이썬(Python)을 이용한 업무 자동화 중 가장 인기가 높은 분야는 자동 문서 생성이라고 생각합니다. 다양한 양식을 손쉽게 생성할 수 있기 때문에, 잘만 한다면 데이터가 생성되는 즉시 보고서나 발표자료를 만들고 발송하는 등의 활용이 가능하거든요. 이번에는 그중에서 python-pptx라는 패키지를 이용해서 ppt 파일 자동 생성하는 방법을 알아보도록 하겠습니다.
프로그램 구성하기
python-pptx는 ppt 파일에 대응하는 프레젠테이션 객체 안에, 원하는 슬라이드를 추가하는 방식으로 구성할 수 있습니다. 이 때, 특정한 양식에 맞춰서 줄글을 적으면 자동으로 제목과 본문, 슬라이드 구분을 할 수 있도록 프로그래밍을 할 수 있지요. 이번에는 아래 양식에 맞춰서 ppt 파일을 만들어 보는 프로그램을 만들어 보도록 하겠습니다.
- 들여쓰기 없는 글은 제목으로 설정한다
- 탭(\t) 문자로 들여쓰기가 있는 글은 본문으로 설정한다
- 빈 줄이 인식된다면 새로운 페이지를 만든다
이번에는 아래 문서를 복사해서 test.txt 파일로 저장한 뒤, 이용해서 두 쪽짜리 ppt 파일을 만들어 보도록 하겠습니다. 각각 '과잉치 발치란 무엇인가요?', '과잉치 발치 주요 산정 기준'이 제목으로 설정된 슬라이드가 생성되겠지요?
과잉치 발치란 무엇인가요? 과잉치 발치 : 정상적인 치아 갯수보다 많은 치아를 과잉치라고 합니다. 발치 과정은 과잉치의 위치나 상태에 따라 달라질 수 있으며, 이에 적용 가능한 상병명과 산정 기준을 완벽 정리해 드립니다. 과잉치 발치 주요 산정 기준 일반적인 과잉치 발치 시에는 발치 원인 상병명을 적용합니다. 매복 과잉치 발치 시에는 반드시 K01.18 과잉매복치 상병명만 적용할 수 있습니다. 과잉치에 인접한 치아의 치식을 선택하여 청구하며, 매복 상태와 발치 난이도에 따라 청구가 달라집니다. 매복 사랑니와 과잉치를 동시에 각각 발치하는 경우, 매복사랑니 상병명과 과잉치 상병명을 각각 적용하여 청구합니다.
코드 알아보기
python-pptx를 설치하지 않은 분들이라면, 터미널 명령어로
pip install python-pptx
를 입력해서 패키지 설치를 해 주시고, 파이썬에서는 pptx라는 이름으로 불러오면 됩니다.이 때, 각 페이지를 만드는데 필요한 용어를 몇 개 알아두면 좋습니다.
- 프레젠테이션을 정의하는 클래스는
pptx.Presentation
로 정의되어 있으며, - 화면 크기를 정의하는 클래스는
pptx.util.Inches
로 정의되어 있습니다 - 각 페이지 레이아웃은
Presentation.slide_layouts([n])
함수를 이용할 수 있으며, 여기서 매개변수 n은 새 슬라이드 만들기의 레이아웃 순서와 동일합니다.
# import package from pptx import Presentation from pptx.util import Inches # 10*7.5인치 화면 생성 prs = Presentation() prs.slide_width = Inches(10) prs.slide_height = Inches(7.5) # txt 파일 읽기 with open('parsed_output.txt', 'r', encoding='utf-8') as file: lines = file.readlines() # 슬라이드 제목 및 내용 추가 title = None content = [] for line in lines: line = line.strip() if not line and title: # 빈 줄이 나올 경우 새 슬라이드 추가 slide = prs.slides.add_slide(prs.slide_layouts[1]) # 제목 및 내용 레이아웃 slide.shapes.title.text = title slide.shapes.placeholders[1].text = "\n".join(content) # 초기화 title = None content = [] elif title is None: # 제목 줄 title = line else: # 내용 줄 content.append(line) # 마지막 슬라이드 추가 if title: slide = prs.slides.add_slide(prs.slide_layouts[1]) slide.shapes.title.text = title slide.shapes.placeholders[1].text = "\n".join(content) # pptx 파일 저장 prs.save('test.pptx') print(f"'ppt 파일이 생성되었습니다.")
'ppt 파일이 생성되었습니다.
이렇게 만들어진 test.ppt 파일은 아래와 같이 생성됩니다.
반응형'Python > 파이썬 기초' 카테고리의 다른 글
[pickle] 파이썬에서 객체 내보내기, 직렬화 알아보기 (0) 2024.07.05 [Python] 파이썬의 set, frozenset 자료형 알아보기 (0) 2024.02.29 [time] 파이썬 코드의 실행시간 측정해보기 (0) 2023.08.25