한글 문서 여러 개를 모아 책으로 만들 때,
홀수인 페이지에 빈 페이지를 삽입하여
책의 오른쪽 부분에 제목이나, 분리된 문서의 시작이 와야 할 경우가 있습니다.
한글 문서 페이지가 홀수이면
빈 페이지를 삽입하는 방법입니다.
우선 아래 링크로 가시면 한글과 컴퓨터의 공식문서를 확인할 수 있습니다.
준비하기
아래 그림과 같이 3쪽의 분량을 갖고 있는 한글 문서를 준비했습니다.
파일 경로는 "C:\Users\karur\Desktop\1111.hwp"

한글 문서 페이지 번호 알아내기
한글 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이면 페이지수가 홀수이므로,
문서 끝으로 이동 후 페이지를 추가합니다.
페이지 수가 짝수이면 한글을 그냥 종료합니다.
페이지를 추가하면 다른 이름으로 저장 후 한글을 종료합니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ chardet ] 파이썬(Python)으로 파일 인코딩 자동 감지하기, 인코딩 탐지기 만들기 (0) | 2024.11.24 |
---|---|
[ Basic ] 파이썬(Python) isinstance() 함수에 대한 기본 (0) | 2024.11.21 |
[ 알고리즘 ] 파이썬 이진탐색(Binary Search) 알고리즘, 숫자 맞추기 (0) | 2024.11.18 |
[ Basic ] 파이썬 리스트 컴프리헨션(List Comprehension) 이해하기 (0) | 2024.11.16 |
[ Customtkinter ] pack() 메서드 가이드, 간단한 위젯 배치(Tkinter pack()) (2) | 2024.11.15 |