반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

저번 시간에 기본적인 슬라이드를 만드는 법과 원하는 레이아웃(혹은 템플릿)의 슬라이드를 만드는 방법을 소개드렸습니다.

 

이번 시간에는 지난 시간에 잠시 언급하였던 placeholder, 쉽게 말해 "글자, 그림과 같은 컨텐츠를 담는 틀"에 대하여 알아보고, 틀 안에 내용을 채우는 법에 대해서 공부해보겠습니다.


1. placeholder의 종류

 

placeholder의 종류는 총 18가지가 있다고 합니다만, 우선 기본 레이아웃들에 들어있는 7가지만 소개드려보겠습니다.

쉬운 이해를 돕기 위해 우리에게 익숙한 ppt 화면을 바탕으로 설명드리겠습니다.

 

1) Tilte: 제목 상자

2) Subtitle: 부제목 상자

 

3) Content Placeholder: 콘텐츠 상자

 

4) Picture Placeholder: 그림 상자

5) Text Placeholder: 텍스트 상자

 

6) Vertical Text Placeholder: 세로 텍스트 상자

7) Vertical Title: 세로 제목

 

 

만약 11가지 레이아웃가 어떤 Placeholder들을 갖고 있는지 확인해보고 싶으시다면 아래의 코드를 실행시켜 보세요.

(결과는 생략할테니 여러분들이 직접 확인해보세요ㅎㅎ)

 

코드
#python-pptx의 가장 기본이 되는 Presentation 클래스 불러오기
from pptx import Presentation

#Presentation 객체 생성
prs = Presentation()

# 반복문으로 기본 레이아웃 11가지 만들기
for i in range(0, 11):
    print("\n======="+"%d"%(i+1)+"번 슬라이드=======")
    slide = prs.slides.add_slide(prs.slide_layouts[i])
    
    # 생성한 레이아웃 안의 모든 placeholder 이름 확인
    for shape in slide.placeholders:
        print('%s' % (shape.name))

 

 

2. placeholder에 내용 넣기

 

1) 텍스트

 

제목 상자와 부제목 상자에 글을 입력하는 방법은 지난 시간에 잠시 다루어 보았습니다.

 

placeholders[인덱싱 번호]로 각 상자들을 변수에 넣어서 객체화 해준 다음, text 함수를 이용해서 텍스트를 입력해주시면 된답니다. 간단하죠?

 

코드의 실행 결과는 지난 시간에 해보았으니 따로 결과는 확인하지 않겠습니다.

 

코드

from pptx import Presentation

prs = Presentation()

slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slide_layout)

# 제목과 부제 박스를 선택해서 변수에 대입
title = slide.placeholders[0]   # title = slide.shapes.title와 동일
subtitle = slide.placeholders[1]

# 제목과 부제에 글자 입력
title.text = "안녕하세요, 여기는 코딩유치원입니다."
subtitle.text = "python-pptx 강의입니다."

# 추가 문단 입력하고 싶을 때 해당 코드 사용
tf = subtitle.text_frame
p = tf.add_paragraph()
p.text = '추가 문단'

#ppt 저장
prs.save('test.pptx')

 

 

2) 그림

 

이번에는 그림을 넣어보기 위해서 Picture Placeholder가 있는 9번째 레이아웃을 사용했답니다. 그리고 저는 현재 실행하고 있는 파이썬 파일과 같은 경로에 그림 상자에 넣어 줄 고양이 사진을 따로 저장해주었습니다.

 

 

* 참고

=======9번 슬라이드=======
Title 1
Picture Placeholder 2
Text Placeholder 3

 

기본 슬라이드 11개 중에 9번째 슬라이드인 '캡션 있는 그림' 슬라이드입니다. 아래 그림을 보시면 위에서부터 순서대로 '그림 - 제목 - 텍스트' 상자 순일 것 같지만 코드로 해당 슬라이드의 placeholders 인덱싱을 보면 Title이 1번, 그림상자가 2번, 텍스트 상자가 3번인 것을 확인하실 수 있어요.

기본 9번 슬라이드

 

텍스트를 넣을 때와 흐름은 비슷하니 코드를 이해하시는데에 어려움은 없으실거예요.

 

코드

from pptx import Presentation

prs = Presentation()

slide_layout = prs.slide_layouts[8]  # 그림 상자가 있는 슬라이드
slide = prs.slides.add_slide(slide_layout)

# Picture Placeholder 선택
ph_picture = slide.placeholders[1] # 0:title, 1:Picture, 2:Text

# 현재 경로에 있는 cat.jpt를 그림 상자에 추가
picture = ph_picture.insert_picture('cat.jpg')

# 저장
prs.save('test_picture.pptx')

 

결과

 

귀여운 고양이 그림이 그림상자에 잘 들어간 것을 확인하실 수 있습니다.

 

오늘 준비한 내용은 여기까지 입니다.

 

오늘도 코딩유치원을 찾아주신 여러분들께 감사드립니다.


<참고 자료>

python-pptx 공식문서_Working with placeholders 부분

https://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html

반응형

+ Recent posts