PYTHON 한글자동화

[ 한글 자동화 ] 한글(HWP) 문서 여러 페이지 복사하기

나루하루001 2025. 5. 28. 11:31
반응형
목차
  1. 한글 문서 페이지 복사 자동화의 필요성
  2. 코드 구성 및 기능 설명
  3. 주요 명령어 분석
  4. 실행 결과 및 활용 방법
  5. 자주 발생하는 문제와 해결 방법



한글 문서 페이지 복사 자동화의 필요성


업무나 학업에서 동일한 형식의 페이지를 여러 번 복사해야 하는 상황이 자주 발생합니다.

 

예를 들어, 동일한 양식의 설문지를 여러 장 만들거나,

반복되는 보고서 템플릿을 복제해야 할 때가 있죠.

 

이런 작업을 수동으로 하면 시간이 많이 소요되고 실수할 가능성도 높아집니다.

 

파이썬을 활용한 한글 문서 자동화는 이러한 반복 작업을 효율적으로 처리할 수 있는 강력한 방법입니다.

특히 win32com 라이브러리를 사용하면

한글 프로그램을 제어하여 다양한 작업을 자동화할 수 있습니다.

 

오늘은 한글 문서의 첫 페이지를 복사하여 여러 페이지로 자동 복제하는 방법을 알아보겠습니다.

 

코드 구성 및 기능 설명


아래 코드는 한글 문서를 열고, 첫 페이지의 내용을 복사하여 지정한 횟수만큼 새 페이지에 붙여넣는 기능을 수행합니다.

전체 코드를 살펴본 후 각 부분의 기능을 자세히 설명하겠습니다.

import win32com.client as win32
import os, shutil
import time

def execute_hwp(hwp_visible=True):
    try:
        hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
        return hwp
    except:
        cache_dir = win32.gencache.GetGeneratePath()
        if os.path.exists(cache_dir):
            shutil.rmtree(cache_dir)

        hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
        return hwp
    finally:
        if 'hwp' in locals():
            hwp.XHwpWindows.Active_XHwpWindow.Visible = hwp_visible

def load_hwp(hwp, path):
    if not os.path.exists(path):
        print("파일이 존재하지 않습니다.")
    else:
        hwp.Open(path, "", "")

def copy_and_paste_pages(hwp, repeat_count=4):
    hwp.Run("MoveDocBegin")
    
    hwp.Run("SelectAll")
    
    hwp.Run("Copy")
    
    hwp.Run("Cancel")
    
    for i in range(repeat_count):
        hwp.Run("BreakPage")
        time.sleep(1)

        hwp.Run("Paste")
        time.sleep(1)

if __name__ == "__main__":
    hwp = execute_hwp()    
    load_hwp(hwp, r"C:\Users\karur\Desktop\한글 테스트 문서.hwp")

    copy_and_paste_pages(hwp, 4)

코드 구성 요소

1. 필요한 라이브러리 가져오기

- win32com.client: 윈도우 COM 객체를 제어하기 위한 라이브러리

- os, shutil: 파일 및 디렉토리 관리

- time: 작업 사이에 지연 시간 추가

 

2. execute_hwp 함수: 한글 프로그램을 실행하고 제어 객체를 생성

- COM 객체 생성 시 캐시 문제가 발생할 경우 캐시를 삭제하고 다시 시도

- hwp_visible 매개변수로 한글 창 표시 여부 설정 가능

 

3. load_hwp 함수: 지정된 경로의 한글 문서 열기

- 파일 존재 여부 확인 후 열기 작업 수행

 

4.copy_and_paste_pages 함수:

문서의 첫 페이지를 복사하여 지정된 횟수만큼 새 페이지에 붙여넣기

- 문서 처음으로 이동 후 전체 선택 - 복사 후 선택 취소

- 지정된 횟수만큼 새 페이지 생성 및 붙여넣기

 

5. 메인 실행 부분: 실제 작업을 수행하는 메인 코드

- 한글 객체 생성

- 문서 열기

- 페이지 복사 함수 호출 (4회 반복)

💡 참고
한글 문서를 불러와 여는 방법에 대한 더 자세한 설명은 이전 블로그 포스트를 참고하시기 바랍니다. 이번 포스트에서는 페이지 복사 기능에 초점을 맞추어 설명하겠습니다.

 

반응형

주요 명령어 분석


copy_and_paste_pages 함수에서 사용된 주요 한글 명령어를 자세히 살펴보겠습니다.

이 명령어들은 hwp.Run() 메서드를 통해 실행되며,

한글 프로그램의 기본 기능을 자동화하는 데 사용됩니다.

 

MoveDocBegin

 

hwp.Run("MoveDocBegin") 

 

이 명령어는 커서를 문서의 맨 처음으로 이동시킵니다.

페이지 복사 작업을 시작하기 전에 커서 위치를 초기화하는 중요한 단계입니다.

 

이렇게 하면 어떤 위치에서 작업을 시작하더라도 항상 문서의 처음부터 작업이 수행되어 일관된 결과를 얻을 수 있습니다.

 

SelectAll

 

hwp.Run("SelectAll")

 

문서의 모든 내용을 선택합니다.

이 명령어는 Ctrl+A 키 조합과 동일한 기능을 수행합니다.

첫 페이지의 모든 내용을 복사하기 위해 사용됩니다.

 

Copy

 

hwp.Run("Copy")

 

선택된 내용을 클립보드에 복사합니다.

이 명령어는 Ctrl+C 키 조합과 동일한 기능을 수행합니다.

SelectAll로 선택된 첫 페이지의 모든 내용을 클립보드에 저장합니다.

 

Cancel

 

hwp.Run("Cancel")

 

현재 선택을 취소합니다.

이 명령어는 Esc 키와 동일한 기능을 수행합니다.

텍스트 선택 상태를 해제하여 다음 작업을 준비합니다.

 

BreakPage

 

hwp.Run("BreakPage")

 

현재 커서 위치에 페이지 나누기를 삽입합니다.

 

이 명령어는 Ctrl+Enter 키 조합과 동일한 기능을 수행합니다.

새로운 페이지를 생성하여 복사된 내용을 붙여넣을 준비를 합니다.

 

Paste

 

hwp.Run("Paste")

 

클립보드의 내용을 현재 커서 위치에 붙여넣습니다.

이 명령어는 Ctrl+V 키 조합과 동일한 기능을 수행합니다.

새로 생성된 페이지에 복사된 내용을 붙여넣습니다.

 

time.sleep()

 

time.sleep(1)

 

지정된 시간(초) 동안 프로그램 실행을 일시 중지합니다. 한

글 프로그램이 명령을 처리할 시간을 확보하여 안정적인 실행을 보장합니다.

특히 페이지 나누기와 붙여넣기 작업 사이에 지연 시간을 두어 작업이 올바르게 수행되도록 합니다.

 

실행 결과 및 활용 방법


이 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다:

 

1. 지정된 한글 문서가 열립니다.

2. 문서의 첫 페이지 내용이 복사됩니다.

3. 4개의 새 페이지가 생성되고, 각 페이지에 복사된 내용이 붙여넣어집니다.

4. 최종적으로 원본 페이지 + 4개의 복제 페이지, 총 5페이지의 문서가 완성됩니다.

 

💡 활용 팁
이 코드는 다음과 같은 상황에서 특히 유용합니다:
  • 동일한 양식의 설문지나 평가지를 여러 부 생성할 때
  • 반복되는 보고서 템플릿을 여러 개 만들 때
  • 동일한 형식의 문서를 대량으로 생성해야 할 때
repeat_count 값을 조정하여 필요한 만큼의 페이지를 생성할 수 있습니다.

 

자주 발생하는 문제와 해결 방법


한글 문서 자동화 작업 시 자주 발생하는 문제점과 그 해결 방법을 알아보겠습니다.

 

문제 1: COM 객체 생성 오류

증상: "com_error: (-2147221005, '인터페이스가 등록되지 않았습니다.', None, None)" 오류 발생

해결 방법:

  • execute_hwp 함수에서 캐시 디렉토리를 삭제하고 다시 시도하는 코드가 이 문제를 해결합니다.
  • 한글 프로그램이 설치되어 있는지 확인하세요.
  • 관리자 권한으로 파이썬 스크립트를 실행해보세요.

문제 2: 작업 속도가 너무 빨라 명령이 제대로 실행되지 않음

 

증상: 페이지 나누기나 붙여넣기가 제대로 실행되지 않는 경우

해결 방법:

  • time.sleep() 함수의 대기 시간을 늘려보세요(예: 1초에서 2초로).
[ 파이썬 관련 블로그 글 목록 ] 

파이썬(Python) 블로그 목록

.

 

반응형