파이썬(Python)

[ 한글 자동화 ] 한글 문서 페이지가 홀수이면 빈 페이지 삽입하기

카루루1007 2024. 11. 19. 23:55
728x90
반응형

한글 문서 여러 개를 모아 책으로 만들 때,

홀수인 페이지에 빈 페이지를 삽입하여

책의 오른쪽 부분에 제목이나, 분리된 문서의 시작이 와야 할 경우가 있습니다.

 

한글 문서 페이지가 홀수이면 

빈 페이지를 삽입하는 방법입니다.

 

우선 아래 링크로 가시면 한글과 컴퓨터의 공식문서를 확인할 수 있습니다.

※ 한글 문서(Hwp) 안의 표 개수 확인하기

 

 준비하기

 

아래 그림과 같이 3쪽의 분량을 갖고 있는 한글 문서를 준비했습니다.

파일 경로는 "C:\Users\karur\Desktop\1111.hwp"

 

728x90

 한글 문서 페이지 번호 알아내기

 

한글 API 공식문서를 살펴보겠습니다.

HwpAutomation.pdf 파일

PageCount 한글 문서의 전제 페이지 수를 나타낸다고 되어 있습니다.

 

먼저 저장된 한글 문서를 열어보겠습니다.

아래 코드를 실행하면 한글문서가 열렸다가 1초 후 닫힙니다.

import win32com.client as win32
import time

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Active_XHwpWindow.Visible = True
hwp.Open(r"C:\Users\karur\Desktop\1111.hwp")

time.sleep(1)

hwp.Quit()

 

한글 문서가 실행되는 모습을 보기 위해 아래와 같이 추가해 주었습니다.

나중에 코드를 완성하고 나서 지우면 실행되는 모습은 보이지 않습니다.

hwp.XHwpWindows.Active_XHwpWindow.Visible = True

 

한글 문서가 제대로 열리는지 확인 후

페이지 번호를 잘 가지고 오는지 확인합니다.

import win32com.client as win32
import time

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Active_XHwpWindow.Visible = True
hwp.Open(r"C:\Users\karur\Desktop\1111.hwp")

last_page = hwp.PageCount
print(last_page)
                
hwp.Quit()

 

last_page라는 변수에 hwp.PageCount로 문서의 페이지 개수를 담았습니다.

출력을 하니 결과는 3으로 제대로 페이지를 가지고 온 것 같습니다.

 

반응형

 문서 맨 끝으로 이동하기

 

페이지를 추가하려면 먼저 파일을 열어 커서를 문서의 맨 마지막으로 보내야 합니다.

커서의 위치를 옮길 때 MovePos() 함수를 사용하면 됩니다.

한글 문서 HwpAutomation.pdf 파일을 열어 MovePos()를 찾아보면 다음과 같이 되어 있습니다.

 

MovePos(3)을 코드에 추가해 줍니다.

아래 코드를 실행하면 커서가 문서의 맨 끝으로 이동합니다.

import win32com.client as win32
import time

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Active_XHwpWindow.Visible = True
hwp.Open(r"C:\Users\karur\Desktop\1111.hwp")

last_page = hwp.PageCount
print(last_page)

hwp.MovePos(3)
time.sleep(4)

hwp.Quit()

 

실행하기 전에 한글 문서의 커서 위치를 문서의 맨 끝이 아닌 다른 곳에 위치시킨 후 저장하고 

위 코드를 실행해 보시기 바랍니다.

그래야 정상적으로 문서 맨 끝으로 커서가 갔는지 확인할 수 있습니다.

 

 빈 페이지 추가하기

 

페이지 추가하기와 비슷한 단어로 공식문서를 검색해도 

찾지 못했습니다.

이럴 때는 한글을 직접 열어 매크로를 만들어 보는 것도 좋은 방법입니다.

 

한글 실행 후

도구스크립트 매크로매크로 정의를 실행합니다.

 

매크로 아래쪽에서 아무거나 선택 후 정의를 눌러줍니다.

 

그다음 한글 문서에서 쪽을 추가하는 Ctrl + Enter를 눌러보겠습니다.

페이지가 추가된 것을 확인한 후

도구스크립트 매크로 매크로 중지를 눌러줍니다.

 

다시 도구스크립트 매크로매크로 실행을 눌러줍니다.

 

아까 선택했던 매크로를 선택한 후 코드 편집을 눌러줍니다.

 

그러면 화면 오른쪽에 매크로 코드가 나타납니다.

 

그냥 Run("BreakPage")를 실행하면 페이지가 추가됩니다.

한글 공식문서 ActionObject.pdf 파일을 열어 찾아보니

쪽 나누기로 되어 있습니다...

 

 코드 마무리하기

 

MovePos(3)으로 문서 맨 끝으로 이동하고

Run("BreakPage")로 페이지를 추가하는 것을 알았습니다.

 

이제 페이지 개수가 홀수이면 페이지를 추가하고

페이지 개수가 짝수이면 페이지를 추가하지 않게 작성해 줍니다.

import win32com.client as win32
import time

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Active_XHwpWindow.Visible = True
hwp.Open(r"C:\Users\karur\Desktop\1111.hwp")

last_page = hwp.PageCount

if last_page % 2 == 1:
    hwp.MovePos(3)
    time.sleep(1)
    hwp.Run("BreakPage")
else:
    hwp.Quit()

hwp.SaveAs(r"C:\Users\karur\Desktop\2222.hwp")
hwp.Quit()

 

last_page를 2로 나눈 나머지가 1이면 페이지수가 홀수이므로,

문서 끝으로 이동 후 페이지를 추가합니다.

페이지 수가 짝수이면 한글을 그냥 종료합니다.

 

페이지를 추가하면 다른 이름으로 저장 후 한글을 종료합니다.

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형