아래아 한글(xy_hwp)

xython_han

hwp(기초)-아래아 한글의 기본구성에 대한 설명

작성자
sjpark
작성일
2024-09-14 11:43
조회
409

** 한글의 구성형태

word-image-2306-1.png

한글의 기본적인 구성은 위와같이 공식사이트에서 얻을 수 있는 형태의 구성으로 되어있습니다

먼저 이것에 숨겨진 하나의 기능이 API가 있다는 것입니다

나머지들은 크게 혼돈이 되는부분은 없는데, 1,2번의 경우가 비슷한데 뭐가 틀릴까라고 생각을 하실수가 잇어 추가적으로 설명을 드립니다

1번은 com객체로 만들어줘서, 다른 외부프로그램이 사용가능한 것이라고 생각하시면 됩니다

그래서 저의 han모듈또한 이것을 이용하는 것이 기본입니다

2번은 옛날에 사용하는 부분이기 때문에, 호환을 위해 남겨놓은 것입니다
XhwpMessageBox 메시지 박스를 제어하는 XHwpMessageBox Object를 얻는다.
XhwpDocuments 도큐먼트를 관리하는 XHwpDocuments Object를 얻는다.
XhwpWindows 윈도우를 관리하는 XHwpWindows Object를 얻는다.
HparameterSet 파라메터셋 오브젝트를 관리하는 HParameterSet Object를 얻는다.
Haction Action을 제어하는 HAction Object를 얻는다.
XHwpODBC ODBC로 제어할 수 있는 Object를 얻는다.
IXHwpDocument 문서에 대한 일반적인 사항들에 대해서 확인이 가능한것
IXHwpFormPushButton
IXHwpFormRadioButton

객체들에대한 사항
IXHwpWindow 윈도우에대한 사항들
HSet ParameterSet Item 데이터들의 집합
HAction 한글에서 특정 기능을 수행하기 위한 액션 오브젝트
HArray ParameterArray의 데이터 집합
XHwpTab 탭 오브젝트
IDHwpAction DHwpAction과 동일 (호환 유지를 위해 제공됨)
IDHwpParameterSet DHwpParameterSet과 동일 (호환 유지를 위해 제공됨)
IDHwpParameterArray DHwpParameterArray와 동일 (호환 유지를 위해 제공됨)
IDHwpCtrlCode DHwpCtrlCode와 동일 (호환 유지를 위해 제공됨)

** 한글은 Action기반 언어이다

한글의 경우는 우리가 ms오피스의 vba를 조금 안다면, 이것하고는 조금 다른 구성을 하고 있습니다

모든 것을 정확히 설명할 수는 없지만, 개략적인 차이점을 비교해서 설명을 하면
ms오피스 한글
  1. 객체를 선택
  2. 선택한 객체의 메소드를 이용해서 실행
  1. 객체를 선택
  2. 공통인 Action중에 하나를 선택해서 실행
Action기반은 원하는 행동(action)에 중심을 둔 프로그램입니다

word-image-2306-2.png

word-image-2306-3.png

** 갑자기 나타나는 HwpCtrl API는 무엇인가?

한글관련된 문서를 보면, 위의 공식적인 그림과 다르게 HwpCtrl이라는 단어가 나타납니다. 이것은 아래아 한글의API 을 통칭하는 단어입니다

아랫부분에 간단하게 API와 내부적인 항목들을 사용하는 2가지가 가능한 것을 다보여드리면 아래와 같습니다

그러니, API가 가능하다면 그것을 사용하는 것이 편할수도 있습니다.

즉, 둘중에서 편한 것을 사용하시면 됩니다

아래와같이 2가지의 경우로 함수를 만들어서 실행하면, 다음과 같습니다


def test_001(self):
# HwpCtrl API를 사용한 경우
action = self.han_program.CreateAction("InsertText")
pset = action.CreateSet()
pset.SetItem("Text", "가나다라마바사아")
action.Execute(pset)

# HAction을 사용한 경우
self.han_program.HAction.GetDefault("InsertText", self.han_program.HParameterSet.HInsertText.HSet)
self.han_program.HParameterSet.HInsertText.Text = "123456789"
self.han_program.HAction.Execute("InsertText", self.han_program.HParameterSet.HInsertText.HSet)

# -*- coding: utf-8 -*-
import han

hwp = han.han("")
hwp.test_001()


word-image-2306-4.png

위의것은 나머지는 제가만든 코드들을 사용해서 한글을 띄우는등의 기능이 있기때문에, 그런것을 보여드리면 더 혼돈이 되기 때문에 나머지는 잊어버리시고, 위의것에 더 집중해서 보시면 더 좋을것같아 그렇게 만들었읍니다

** HwpCtrl API의 구성

HwpCtrlAPI의 문서를 보면, 아래와 같은 구성으로 되어있습니다
1 Action Object 사용자가 하나의 단위 기능으로 인식하는 글의 기능 각각을 액션이라고 부른다. 예를 들면 “파일열기”, “파일저장”, “표 삽입”, “글자 속성 수정” 등이다. 가장 쉽게 이해할 수 있는 액션의 정의는, '메뉴, 툴바, 단축키를 통해 실행할 수 있는 하나의 기능'으로 생각하면 된다
글 컨트롤을 이용하는 사용자가 글의 액션을 직접 다룰 수 있도록 하기 위한 오브젝트
2 CtrlCode Object 문서 내부의 표, 각주 등의 컨트롤(특수 문자)을 나타내는 오브젝트
3 HwpCtrl Object HwpCtrl 오브젝트는 글 컨트롤의 메인 오브젝트로서 다른 오브젝트의 생성, 툴바 제어 등 컨트롤 전반적인 기능 외에 사용 빈도수가
높고 중요한 대부분의 메소드들을 사용자에게 직접 제공
4 HwpCtrl Event 사용자의 입력에 대한 이벤트를 감지하여 이벤트 핸들러에게 전달해준다. 다음에 소개되는 함수들은 일종의 이벤트 핸들러로 사용자에 맞게 재정의 되어 사용
5 ParameterSet Object 오브젝트간 또는 액션의 실행에 필요한 정보를 주고받을 수 있도록 하기 위한 오브젝트
6 ParameterArray parameter set의 아이템으로 배열을 표현하는 데 사용된다. 일반적인 method의 독립적인 인수로 사용되는 일은 없고, parameter set
의 아이템으로만 사용된다
7 HwpMenu HwpMenu 는 HwpCtrl에서 컨텍스트 메뉴를 다루는 객체