PYTHON PROGRAM

[ 한글 자동화 ] 한글(HWP) 문서 자동 합치기 프로그램 만들기

나루하루001 2025. 6. 6. 22:23
반응형
목차
  1. 한글 문서 합치기 프로그램 소개
  2. 프로그램 주요 기능
  3. 사용 방법 및 인터페이스
  4. 기능 구현 방식 및 핵심 기술
  5. 활용 사례 및 응용 방안
  6. 마치며



한글 문서 합치기 프로그램 소개


예전에 만들었던 프로그램을 조금 업그레이드 하였습니다.

 

업무나 학업 중에 여러 개의 한글(HWP) 문서를 하나로 합쳐야 하는 상황이 자주 발생합니다.

 

일일이 복사-붙여넣기를 하거나 문서 끼워넣기를 반복하는 것은 시간 소모가 큰 작업입니다.

이러한 불편함을 해소하기 위해 PySide6와 한글 자동화 기술을 활용한 '한글 문서 자동 합치기' 프로그램을 소개합니다.

이 프로그램은 여러 개의 한글 문서를 손쉽게 하나의 파일로 병합할 수 있게 해주며,

문서 병합 시 글자 모양, 문단 모양, 스타일, 쪽 모양 등의 서식을 유지할지 선택할 수 있는 옵션도 제공합니다.

이런 분들에게 유용합니다!
- 여러 장의 보고서를 하나로 합쳐야 하는 직장인
- 논문이나 레포트 작성 시 여러 파일을 통합해야 하는 학생
- 문서 관리 업무를 효율화하고 싶은 행정직 종사자
- 한글 문서 자동화에 관심 있는 개발자

 

프로그램 주요 기능


이 프로그램은 다음과 같은 주요 기능을 제공합니다:

 

1. 다중 파일 선택 및 관리

 

여러 개의 한글 파일(.hwp, .hwpx)을 선택하여 목록에 추가할 수 있습니다.

체크박스를 통해 개별 파일을 선택하거나 해제할 수 있으며,

헤더를 클릭하면 모든 파일을 한 번에 선택/해제할 수 있습니다.

목록에서 선택한 파일을 삭제하거나 순서를 위/아래로 이동시킬 수 있어 병합 순서를 자유롭게 조정할 수 있습니다.

2. 문서 서식 유지 옵션

 

문서 병합 시 다음과 같은 서식 유지 옵션을 선택할 수 있습니다:

- 글자 모양 유지: 글꼴, 크기, 색상 등의 글자 서식을 유지합니다.

- 문단 모양 유지: 들여쓰기, 줄 간격, 정렬 방식 등의 문단 서식을 유지합니다.

- 스타일 유지: 문서에 적용된 스타일 정보를 유지합니다.

- 쪽 모양 유지: 용지 크기, 여백, 머리말/꼬리말 등의 페이지 설정을 유지합니다.

 

3. 홀수 페이지 자동 처리

 

홀수 페이지 후 빈 페이지 자동 삽입 기능을 제공합니다.

이 기능을 활성화하면 문서의 페이지 수가 홀수일 때 자동으로 빈 페이지를 추가하여

양면 인쇄 시 문제가 발생하지 않도록 합니다.

 

4. 저장 옵션

 

합친 문서를 저장할 때 두 가지 옵션을 제공합니다:

- 자동 저장: 첫 번째 파일 이름에 '_합본'을 붙여 자동으로 저장합니다.

- 다른 이름으로 저장: 사용자가 원하는 위치와 이름으로 저장할 수 있습니다.

 

5. 진행 상태 표시

 

문서 병합 과정의 진행 상황을 프로그레스 바를 통해 실시간으로 확인할 수 있어 작업 진행 상태를 쉽게 파악할 수 있습니다.

 

반응형

사용 방법 및 인터페이스


프로그램의 사용 방법은 매우 직관적이고 간단합니다:

 

1. 파일 추가하기

 

'한글 파일 불러오기' 버튼을 클릭하여 합치고 싶은 한글 파일들을 선택합니다.

여러 개의 파일을 한 번에 선택할 수 있으며, 선택한 파일들은 테이블에 목록으로 표시됩니다.

 

2. 파일 순서 조정하기

 

합칠 문서의 순서를 변경하고 싶다면:

1. 이동하려는 파일의 체크박스를 선택합니다.

2. '위로' 또는 '아래로' 버튼을 클릭하여 순서를 조정합니다.

3. 필요 없는 파일은 체크한 후 '선택 삭제' 버튼을 클릭하여 목록에서 제거할 수 있습니다.

 

3. 옵션 설정하기

 

문서 병합 시 적용할 옵션을 체크박스로 선택합니다:

- 글자 모양 유지

- 문단 모양 유지

- 스타일 유지

- 쪽 모양 유지

 

- 빈 페이지 삽입 (홀수 페이지 후 자동으로 빈 페이지 추가)

 

4. 파일 합치기 및 저장

 

모든 설정이 완료되면 상단 메뉴에서 다음 중 하나를 선택합니다:

- '저장': 첫 번째 파일 이름에 '_합본'을 붙여 자동으로 저장합니다.

- '다른 이름으로 저장': 원하는 위치와 이름으로 저장할 수 있습니다.

 

병합 과정이 시작되면 프로그레스 바를 통해 진행 상황을 확인할 수 있으며,

완료 시 성공 메시지와 저장된 경로를 알려줍니다.

 

기능 구현 방식 및 핵심 기술


이 프로그램은 다음과 같은 핵심 기술을 활용하여 구현되었습니다:

 

1. PySide6 GUI 프레임워크

 

사용자 인터페이스는 Qt 기반의 PySide6 라이브러리를 사용하여 구현되었습니다.

QMainWindow, QTableView, QStandardItemModel 등의 클래스를 활용하여

직관적인 사용자 인터페이스를 구성하였습니다.

 

체크박스, 버튼, 프로그레스 바 등의 위젯을 통해 사용자와 상호작용할 수 있도록 설계되었습니다.

 

2. win32com을 통한 한글 자동화

 

한글 프로그램 제어는 win32com.client 라이브러리를 사용하여 COM 인터페이스를 통해 이루어집니다.

HWPFrame.HwpObject 객체를 생성하여

한글 프로그램을 제어하고, 문서 열기, 저장, 페이지 추가 등의 작업을 수행합니다.

<!-- 한글 객체 생성 코드 예시 -->
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
hwp.XHwpWindows.Active_XHwpWindow.Visible = hwp_visible  # 화면 표시 여부 설정

 

3. 문서 병합 메커니즘

 

문서 병합은 다음과 같은 과정으로 이루어집니다:

1. 첫 번째 파일을 기본 문서로 열기

2. 문서 끝으로 이동하여 페이지 나누기 실행

3. 다음 파일을 현재 위치에 끼워넣기

4. 필요시 홀수 페이지 후 빈 페이지 추가 5. 2~4 과정을 모든 파일에 대해 반복

6. 최종 문서 저장

<!-- 문서 끼워넣기 코드 예시 -->
# 문서 끝으로 이동
hwp.Run("MoveDocEnd")
        
# 페이지 나누기
hwp.Run("BreakPage")
        
# 문서 끼워넣기
action = hwp.CreateAction("InsertFile")
param_set = action.CreateSet()
        
# 파라미터 설정 (체크박스 상태에 따라)
param_set.SetItem("FileName", insert_file_path)
param_set.SetItem("KeepSection", 0)
param_set.SetItem("KeepCharshape", 1 if self.ui.checkBox.isChecked() else 0)    
param_set.SetItem("KeepParashape", 1 if self.ui.checkBox_2.isChecked() else 0)  
param_set.SetItem("KeepStyle", 1 if self.ui.checkBox_3.isChecked() else 0)     
param_set.SetItem("KeepPageDef", 1 if self.ui.checkBox_4.isChecked() else 0)
        
# 액션 실행
action.Execute(param_set)

 

4. 파일 목록 관리 기능

 

QStandardItemModel을 사용하여 파일 목록을 관리하고,

체크박스와 파일 경로를 표시합니다.

파일의 순서 변경, 선택 삭제 등의 기능은 모델의 아이템을 조작하여 구현되었습니다.

기술적 참고사항
한글 자동화 시 COM 인터페이스 캐시 문제가 발생할 수 있습니다. 이를 해결하기 위해 캐시 디렉토리를 삭제하고 다시 생성하는 예외 처리 코드가 포함되어 있습니다. 이 방식은 한글 자동화 프로그램 개발 시 자주 발생하는 문제를 효과적으로 해결합니다.

 

활용 사례 및 응용 방안


이 프로그램은 다양한 상황에서 유용하게 활용될 수 있습니다:

 

1. 업무 문서 통합

 

여러 팀원이 작성한 보고서나 제안서를 하나의 문서로 통합할 때 사용할 수 있습니다.

각 부서별로 작성된 계획서나 결과 보고서를 하나의 종합 문서로 만들 수 있습니다.

정기적으로 발행되는 소식지나 보고서를 취합하는 데 활용할 수 있습니다.

 

2. 학술 자료 통합

 

논문이나 학술 보고서의 각 장(chapter)을 개별 파일로 작성한 후 최종적으로 하나의 문서로 통합할 수 있습니다.

학생들의 과제물을 하나의 문서로 취합하여 관리할 수 있습니다.

연구 자료나 실험 결과를 체계적으로 통합하는 데 활용할 수 있습니다.

 

3. 출판 및 편집 작업

 

책이나 매뉴얼의 각 장을 개별적으로 작성한 후 최종 출판용 문서로 통합할 수 있습니다.

여러 기고자의 글을 하나의 잡지나 간행물로 취합할 수 있습니다.

양면 인쇄를 위해 홀수 페이지 후 빈 페이지 자동 삽입 기능을 활용할 수 있습니다.

 

마치며


한글 문서 자동 합치기 프로그램은 일상적인 문서 작업을 훨씬 효율적으로 만들어주는 실용적인 도구입니다.

 

PySide6와 win32com 라이브러리를 활용하여 한글 프로그램을 제어하는 방식은

다양한 문서 자동화 작업에 응용할 수 있는 기반 지식이 됩니다.

 

이 프로그램은 단순히 문서를 합치는 기능을 넘어,

문서 관리 업무의 효율성을 크게 향상시킬 수 있는 잠재력을 가지고 있습니다.

 

필요에 따라 기능을 확장하거나 사용자 인터페이스를 개선하여 더욱 강력한 문서 관리 도구로 발전시킬 수 있을 것입니다.

문서 작업에서 반복적이고 시간 소모적인 작업을 자동화함으로써,

우리는 더 창의적이고 가치 있는 일에 집중할 수 있게 됩니다.

 

이러한 자동화 도구의 개발과 활용은 업무 생산성 향상에 큰 도움이 될 것입니다.

 

아래는 다운로드 링크입니다.

https://drive.google.com/file/d/1HGkuDUzdYwg2ES7al1_dyO8mHY7ilqS9/view?usp=drive_link

반응형