[ 한글 자동화 ] Python으로 한글 문서의 페이지 수 확인하기
- 한글 자동화 소개
- 필요한 라이브러리 설치
- 한글 객체 초기화하기
- 문서 열기
- 페이지 수 확인하기
- 전체 코드 분석
- 자주 발생하는 오류와 해결 방법
한글 자동화 소개
한글 문서를 프로그래밍 방식으로 제어하는 것은 업무 자동화에 매우 유용합니다.
특히 많은 문서를 처리해야 하는 경우,
Python과 한글 자동화 API를 활용하면 반복 작업을 크게 줄일 수 있습니다.
한글은 OLE Automation을 통해 외부 프로그램에서 제어가 가능합니다.
이를 통해 문서 열기, 저장, 내용 수정, 페이지 정보 확인 등 다양한 작업을 자동화할 수 있습니다.
한글 자동화의 핵심은 IHwpObject라는 최상위 객체입니다.
이 객체를 통해 문서의 모든 속성과 메서드에 접근할 수 있으며,
PageCount 속성을 사용하면 문서의 총 페이지 수를 쉽게 확인할 수 있습니다.
필요한 라이브러리 설치
한글 자동화를 위해서는 pywin32 라이브러리가 필요합니다.
이 라이브러리는 Windows API와 COM 객체를 Python에서 사용할 수 있게 해줍니다.
다음 명령어로 pywin32를 설치할 수 있습니다:
pip install pywin32
설치가 완료되면 win32com.client 모듈을 통해 한글 객체에 접근할 수 있습니다.
이 모듈은 COM 인터페이스를 통해 한글 프로그램을 제어하는 데 필요합니다.
한글 객체 초기화하기
한글 자동화의 첫 단계는 HwpObject를 생성하는 것입니다.
이 객체는 한글 프로그램의 인스턴스를 나타내며, 모든 자동화 작업의 시작점입니다.
아래 코드는 execute_hwp 함수를 통해 한글 객체를 초기화하는 방법을 보여줍니다:
def execute_hwp(hwp_visible=True):
try:
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
except AttributeError:
cache_dir = win32.gencache.GetGeneratePath()
if os.path.exists(cache_dir):
shutil.rmtree(cache_dir)
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
if hwp:
hwp.XHwpWindows.Active_XHwpWindow.Visible = hwp_visible
return hwp
위 코드에서 hwp_visible 매개변수는 한글 창을 화면에 표시할지 여부를 결정합니다.
자동화 작업에서는 보통 False로 설정하여 백그라운드에서 작업을 수행합니다.
EnsureDispatch 메서드는 COM 객체를 생성하고 캐시합니다.
가끔 캐시 관련 오류가 발생할 수 있는데, 이 경우 예외 처리 부분에서 캐시 디렉토리를 삭제하고 다시 시도합니다.
문서 열기
한글 객체를 초기화한 후에는 load_hwp 함수를 사용하여 문서를 열 수 있습니다:
def load_hwp(hwp, path):
if not hwp:
print("HWP 객체가 초기화되지 않았습니다.")
return False
if not os.path.exists(path):
print(f"파일이 존재하지 않습니다: {path}")
return False
else:
try:
hwp.Open(path, "", "")
return True
except Exception as e:
print(f"파일을 여는 중 오류 발생: {e}")
return False
Open 메서드는 세 가지 매개변수를 받습니다:
1. 파일 경로
2. 문서 형식(빈 문자열은 자동 인식)
3. 추가 옵션(빈 문자열은 기본 옵션)
문서 형식에는 "HWP", "HTML", "TEXT" 등 다양한 형식을 지정할 수 있으며,
추가 옵션을 통해 읽기 전용 모드 등을 설정할 수 있습니다.
페이지 수 확인하기
문서가 성공적으로 열리면 PageCount 속성을 통해 총 페이지 수를 확인할 수 있습니다:
page_count = hwp_instance.PageCount
print(f"문서의 전체 페이지 수: {page_count}")
PageCount는 IHwpObject의 속성으로,
문서의 전체 페이지 수를 반환합니다.
이 속성은 읽기 전용이며, 문서의 pagination이 완료된 상태에서 값을 제공합니다.
전체 코드 분석
이제 전체 코드를 살펴보겠습니다:
import win32com.client as win32
import os
import shutil
def execute_hwp(hwp_visible=True):
try:
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
except AttributeError:
cache_dir = win32.gencache.GetGeneratePath()
if os.path.exists(cache_dir):
shutil.rmtree(cache_dir)
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
if hwp:
hwp.XHwpWindows.Active_XHwpWindow.Visible = hwp_visible
return hwp
def load_hwp(hwp, path):
if not hwp:
print("HWP 객체가 초기화되지 않았습니다.")
return False
if not os.path.exists(path):
print(f"파일이 존재하지 않습니다: {path}")
return False
else:
try:
hwp.Open(path, "", "")
return True
except Exception as e:
print(f"파일을 여는 중 오류 발생: {e}")
return False
if __name__ == "__main__":
hwp_instance = execute_hwp(hwp_visible=False)
if hwp_instance:
file_path = r"C:\Users\karur\Desktop\123.hwp"
if load_hwp(hwp_instance, file_path):
try:
page_count = hwp_instance.PageCount
print(f"문서의 전체 페이지 수: {page_count}")
except AttributeError:
print("PageCount 속성을 찾을 수 없습니다. HWP 객체나 파일이 올바르게 로드되었는지 확인하세요.")
except Exception as e:
print(f"페이지 수를 가져오는 중 오류 발생: {e}")
else:
print("한글 애플리케이션을 실행하지 못했습니다.")
코드의 주요 구성 요소:
1. 필요한 라이브러리 임포트 (win32com.client, os, shutil)
2. execute_hwp 함수: 한글 객체 초기화
3. load_hwp 함수: 한글 문서 열기
4. 메인 코드: 한글 객체 생성, 문서 열기, 페이지 수 확인
이 코드는 한글 문서의 페이지 수를 확인하는 기본적인 예제입니다.
실제 업무에서는 이를 확장하여 여러 문서의 페이지 수를 일괄 확인하거나,
특정 조건에 맞는 문서만 처리하는 등의 작업을 수행할 수 있습니다.
자주 발생하는 오류와 해결 방법
한글 자동화 작업 시 몇 가지 일반적인 오류가 발생할 수 있습니다:
1. COM 객체 생성 오류
win32com 모듈의 캐시 문제로 인해 발생할 수 있습니다.
위 코드에서는 AttributeError 예외를 처리하여
캐시 디렉토리를 삭제하고 다시 시도하는 방식으로 해결합니다.
2. 한글 프로그램이 설치되지 않은 경우
한글 자동화를 위해서는 컴퓨터에 한글 프로그램이 설치되어 있어야 합니다.
설치되지 않은 경우 COM 객체 생성 시 오류가 발생합니다.
3. 파일 경로 오류
파일 경로가 잘못되었거나 존재하지 않는 경우 오류가 발생합니다.
load_hwp 함수에서는 os.path.exists를 통해 파일 존재 여부를 확인합니다.
4. PageCount 속성 접근 오류
문서가 제대로 열리지 않았거나 손상된 경우 PageCount 속성에 접근할 때 오류가 발생할 수 있습니다.
try-except 블록을 사용하여 이러한 오류를 처리하는 것이 좋습니다.
결론
Python과 win32com 라이브러리를 사용하여 한글 문서의 페이지 수를 확인하는 방법을 살펴보았습니다.
이 기술은 문서 관리 자동화, 보고서 생성, 대량의 문서 처리 등 다양한 업무에 활용할 수 있습니다.
한글 자동화는 단순히 페이지 수 확인뿐만 아니라 문서 내용 수정, 서식 변경, 표 조작 등
다양한 작업을 자동화할 수 있는 강력한 도구입니다.
기본 개념을 이해하고 나면 더 복잡한 자동화 작업도 수행할 수 있을 것입니다.
[ 파이썬 관련 블로그 글 목록 ]
파이썬(Python) 블로그 목록