본문 바로가기
Make the Learning Curve/Python

[Python] pyautogui를 이용한 마우스 자동화(feat. ppt 자동 인쇄)

by 에이도 2021. 3. 3.

안녕하세요, 에이도입니다.

어제 개강을 하고, 강의자료를 인쇄해야 하는데 많은 분들이 아시는 것처럼 A4 한 장에 ppt 한 장을 인쇄한다는 건 너무 아깝지 않으신가요..? 

저는 그게 너무 아깝고 비효율적이라고 생각하여 2장 혹은 4장씩 인쇄를 해서 사용합니다! 

그런데 이게 한, 두개일때는 괜찮은데 ppt 파일만 10개, 20개 정도 되어가니 하나하나 하는 게 비효율적이라고 생각했습니다.(산업공학과 종특인가요..ㅎ 비효율적인 것을 효율적으로!!) 

그래서 이를 해결하고자 ppt 4장 분할인쇄 python을 검색했지만 없는 것 같았습니다.(제대로 안 찾아봄)

그러다 저번에 유튜브에서 잠깐 보았던 파이썬에 마우스를 제어하는 라이브러리가 있다는 것이 떠올랐고, 

바로 검색을 했고 pyautogui를 찾았습니다! 

마우스를 특정 위치에 올려두면 x, y 좌표를 찾을 수 있고,

이 x, y 좌표를 입력값으로 주면, click함수를 통해 자동으로 클릭해줍니다.

 

ppt 인쇄는 몇 번의 정해진 위치의 아이콘을 클릭하여 인쇄하는 것이기 때문에 이 방법이 통했습니다! 

물론 각 좌표를 찾는 것에는 시간이  조금 걸렸지만 말입니다! 

 

import pyautogui
import time

# 마우스 x,y 좌표확인
# x_lo, y_lo = pyautogui.position()
# print(x_lo,y_lo)

pyautogui.click(x=27,y=49) # ppt - 파일
time.sleep(1)

pyautogui.click(x=60,y=372) # ppt - 파일 - 인쇄
time.sleep(0.5)

pyautogui.click(x=404,y=256) # ppt - 파일 - 인쇄 - 프린트 설정
time.sleep(1)

pyautogui.click(x=307,y=406) # ppt - 파일 - 인쇄 - 프린트 설정 - pdf
time.sleep(0.5)

pyautogui.click(x=329,y=455) # ppt - 파일 - 인쇄 - 프린트 설정 - pdf - 슬라이드 분할 선택 
time.sleep(0.5)

pyautogui.click(x=255,y=693) # ppt - 파일 - 인쇄 - 프린트 설정 - pdf - 슬라이드 분할 선택 - 4쪽 분할
time.sleep(0.5)

pyautogui.click(x=330,y=553) # ppt - 파일 - 인쇄 - 프린트 설정 - pdf - 슬라이드 분할 선택 - 4쪽 분할 - 방향 선택
time.sleep(0.5)

pyautogui.click(x=313,y=651) # ppt - 파일 - 인쇄 - 프린트 설정 - pdf - 슬라이드 분할 선택 - 4쪽 분할 - 방향 선택 - 가로 방향
time.sleep(0.5)

pyautogui.click(x=227,y=162) # ppt - 파일 - 인쇄 - 프린트 설정 - pdf - 슬라이드 분할 선택 - 4쪽 분할 - 방향 선택 - 가로 방향 - 인쇄
time.sleep(0.5)

제 노트북 화면 상 좌표는 이렇게 되어있습니다! 

이게 또 보기에 너무 길고 귀찮지 않으신가요..?

그래서 좌표만 똑 떼어다가 반복문으로 만들었습니다!

location_x = [27,60,404,307,329,255,330,313,227 ] 
location_y = [49,372,256,406,455,693,553,651,162 ]


for x,y in zip(location_x,location_y):
    pyautogui.click(x,y) 
    time.sleep(0.5)

이렇게 하면, 총 9번의 클릭으로 각 ppt 파일을 4장 분할 pdf로 저장할 수 있습니다! 

 

오늘은 시연 영상까지 준비해보았습니다!

 

아..! 근데 파일 저장할 때는 다 다르게 해야 하니 ㅎㅎ.. ( 키보드 제어도 있는 걸로 압니다..!) 

그래도 짧은 시간에 이렇게 ppt 4장 자동 분할 인쇄를 하는 매크로를 만들어 보았습니다!

사실 자격증 공부하기 싫어서 하다 보니까 이걸 만들었는데 나쁘지 않은 결과물이라고 생각합니다.

이런 방법도 있으니 참고해주시면 좋을 것 같습니다! 굿밤 보내세요~~!