오늘은 파이썬 스크립트와 한글(HWP) 프로그램의 COM 자동화 기능을 활용하여 HWP 파일을 PDF로 자동으로 변환하는 프로그램을 만드는 방법을 소개해 드리겠습니다. 이 방법을 통해 반복적인 문서 변환 작업을 효율적으로 처리하고, 시간을 절약하실 수 있을 겁니다.
1. 한컴 자동화 보안 모듈(Automation) 등록
한글 프로그램을 COM 자동화로 제어할 때, 보안상의 이유로 파일 입출력 경로를 검사하는 모듈이 필요합니다. 한컴에서 제공하는 '보안 모듈(Automation)'을 등록하여 이러한 보안 제약을 해결할 수 있습니다.
- 모듈 다운로드: 먼저, 한글 개발자 센터(https://developer.hancom.com/hwpautomation)에서 보안모듈(Automation).zip 파일을 다운로드합니다.
- DLL 파일 배치: 다운로드받은 ZIP 파일의 압축을 해제한 후, 그 안에 있는 FilePathCheckerModuleExample.dll 파일을 원하는 경로(예: C:\HwpModule\)에 배치합니다.
- 레지스트리 등록: 이제 regedit를 사용하여 해당 DLL 파일의 경로를 레지스트리에 등록해야 합니다.
- 레지스트리 편집기에서 다음 경로를 찾아 이동합니다. HKEY_CURRENT_USER\Software\HNC\HwpAutomation\Modules
- 만약 Modules 키가 없다면 새로 생성합니다.
- Modules 키 아래에 마우스 오른쪽 버튼을 클릭하여 '새로 만들기(N)' -> '문자열 값(S)'을 선택합니다.
- 새로 만든 문자열 값의 이름은 FilePathCheckerModuleExample 또는 스크립트에서 사용하실 다른 이름(예: AutomationModule)으로 지정합니다. 스크립트에서 이 이름으로 모듈을 호출할 것이므로, 여기에서 설정한 이름을 기억해 두십시오.
- 생성된 문자열 값을 더블 클릭하여 '값 데이터(V)'에 위에서 DLL 파일을 배치한 전체 경로를 입력합니다. 예: C:\HwpModule\FilePathCheckerModuleExample.dll
2. Python 스크립트: hwp_to_pdf.py
이제 HWP 파일을 PDF로 변환하는 핵심 로직을 담은 파이썬 스크립트입니다. win32com.client 라이브러리를 활용하여 한글 COM 객체를 제어하고, 앞서 등록한 보안 모듈을 통해 파일을 안전하게 열고 변환합니다.
python
import sys
import os
import win32com.client as win32
def get_hwp_app():
"""
HWP COM 객체 생성 + 보안 모듈 등록
(레지스트리에는 미리 FilePathCheckDLL용 모듈이 등록되어 있어야 합니다.)
"""
# 한글 객체 생성
hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")
# 보안 모듈 등록
# 두 번째 인자는 레지스트리에 등록한 이름으로 맞춰야 합니다.
# 예: "SecurityModule", "AutomationModule", "FilePathCheckerModuleExample" 등
# 레지스트리 설정에 맞게 수정해서 사용하십시오.
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample")
# 한글 창을 보이지 않게 설정 (필요 시 주석 해제)
try:
hwp.XHwpWindows.Item(0).Visible = False
except Exception:
pass
return hwp
def convert_hwp_to_pdf(input_path, output_path):
# 절대 경로로 변환
input_path = os.path.abspath(input_path)
output_path = os.path.abspath(output_path)
if not os.path.exists(input_path):
raise FileNotFoundError(f"입력 파일을 찾을 수 없습니다: {input_path}")
# 출력 디렉터리 생성
out_dir = os.path.dirname(output_path)
if out_dir and not os.path.exists(out_dir):
os.makedirs(out_dir, exist_ok=True)
# HWP 애플리케이션 준비 (보안 모듈 포함)
hwp = get_hwp_app()
try:
# 보안 팝업 없이 파일 열기
# 옵션이 필요하면 두 번째 인자에 "HWP", 세 번째 인자에 "forceopen:true" 등 추가 가능
hwp.Open(input_path)
# PDF 저장용 파라미터 셋 가져오기
params = hwp.HParameterSet.HFileOpenSave
params.filename = output_path
params.Format = "PDF"
# 가능한 액션 순서대로 시도 (버전별 차이 대응)
executed = False
for action_name in ["FileSaveAsPdf", "FileSaveAs_S"]:
try:
hwp.HAction.GetDefault(action_name, params.HSet)
hwp.HAction.Execute(action_name, params.HSet)
executed = True
break
except Exception:
continue
if not executed:
raise RuntimeError("PDF 저장 액션(FileSaveAsPdf / FileSaveAs_S) 실행 실패")
finally:
# 한글 종료
try:
hwp.Quit()
except Exception:
pass
def main():
if len(sys.argv) != 3:
print("Usage: hwp_to_pdf.exe input.hwp output.pdf")
sys.exit(1)
input_path = sys.argv[1]
output_path = sys.argv[2]
try:
convert_hwp_to_pdf(input_path, output_path)
print(f"변환 성공: {input_path} -> {output_path}")
except Exception as e:
print(f"오류 발생: {e}")
sys.exit(1)
if __name__ == "__main__":
main()
3. 프로그램 컴파일 (EXE 파일 생성)
위 파이썬 스크립트를 독립 실행 가능한 .exe 파일로 만들면, 파이썬 환경이 없는 다른 컴퓨터에서도 이 변환 프로그램을 사용할 수 있습니다. PyInstaller를 이용하면 손쉽게 컴파일할 수 있습니다.
bash
pip install pyinstaller
pyinstaller --onefile hwp_to_pdf.py
명령어를 실행하면 dist 폴더 안에 hwp_to_pdf.exe 파일이 생성됩니다.
4. 프로그램 실행 방법
이제 생성된 hwp_to_pdf.exe 파일을 사용하여 HWP 파일을 PDF로 변환해 볼 차례입니다. 명령 프롬프트나 PowerShell에서 다음과 같이 실행합니다.
bash
.\hwp_to_pdf.exe .\123.hwp .\123.pdf
- .\hwp_to_pdf.exe: 컴파일된 프로그램 파일입니다.
- .\123.hwp: 변환할 원본 HWP 파일의 경로입니다.
- .\123.pdf: 변환될 PDF 파일의 저장 경로와 파일 이름입니다.
마무리하며
이 블로그 게시물을 통해 HWP 파일을 PDF로 자동 변환하는 효율적인 방법을 배우셨기를 바랍니다. 이러한 자동화는 단순 반복 작업을 줄여주고, 개발자 주인님의 소중한 시간을 절약하는 데 기여할 것입니다.
이 스크립트를 활용하여 더욱 생산적인 작업 환경을 구축하시기를 응원하겠습니다!
'Python' 카테고리의 다른 글
| 파이썬 스크립트(.py)를 실행 파일(.exe)로 변환하는 방법: PyInstaller 활용 가이드 (0) | 2025.12.12 |
|---|---|
| 윈도우에서 colorama 설치(No module named 'colorama') (0) | 2025.01.09 |
| python3 make 오류 'LookupError: unknown encoding: EUC-KR' 대처법 (0) | 2021.02.04 |