카테고리 없음

[ 파이썬 한글 자동화 ] 한글 자동화 ParameterSet Type 정리

카루루1007 2024. 10. 24. 11:44
728x90
반응형

한글 자동화를 공부하면서 한컴에서 제공하는 공식 문서를 자주 보게 됩니다.

공식문서 다운로드 : 한글 문서(Hwp) 안의 표 개수 확인하기

 

공식문서 중 ParameterSetObject.pdf 파일의

Type에 대해 정리한 것입니다.

 

 ParameterSetObject.pdf 파일 보기

 

해당 파일을 열어보면 아래 그림과 같은 표를 볼 수 있습니다.

여기서 빨간색 네모 부분이 무엇인지 

구글링을 통해 한컴에서 제공하는(제공했던??) 문서를 정리한 것입니다.

 

반응형

 파라미터 Type 종류

 

구글링을 통해 찾은 문서에서는 아래와 같이 정리가 되어 있습니다.

구분 자료형 설명
0 PIT_NULL UINT NULL
1 PIT_BSTR WORD 문자열 길이(slen)
WCHAR array[len] 문자열
2 PIT_I1 UINT INT8
3 PIT_I2 UINT INT16
4 PIT_I4 UINT INT32
5 PIT_I UINT INT
6 PIT_UI1 UINT UINT8
7 PIT_UI2 UINT UINT16
8 PIT_UI4 UINT UINT32
9 PIT_UI UINT UINT
0x8000 PIT_SET Parameter Set 파라미터 셋
0x8001 PIT_ARRAY INT16 파라미터 셋 개수
ParameterArray 파라미터 셋 배열
0x8002 PIT_BINDATA UINT16 바이너리 데이터 ID

 

파라미터 Type 종류에서 설명 부분이 의미하는 내용입니다.

자료형 길이 부호 설명
BYTE 1   부호 없는 한 바이트(0~255)
WORD 2   16비트 컴파일러에서 ‘unsigned int’에 해당
DWORD 4   16비트 컴파일러에서 ‘unsigned long’에 해당
WCHAR 2   한글의 기본 코드로 유니코드 기반 문자
HWPUNIT 4   1/7200인치로 표현된 한글 내부 단위
SHWPUNIT 4 1/7200인치로 표현된 한글 내부 단위
UINT8 1   ‘unsigned __int8’ 에 해당
UINT16 2   ‘unsigned __int16’ 에 해당
UINT32(=UINT) 4   ‘unsigned __int32’ 에 해당
INT8 1 ‘signed __int8’ 에 해당
INT16 2 ‘signed __int16’ 에 해당
INT32 4 ‘signed __int32’ 에 해당
HWPUNIT16 2 INT16 과 같다.
COLORREF 4   RGB값(0x00bbggrr)을 십진수로 표시
(rr : red 1 byte, gg : green 1 byte, bb : blue 1 byte)
BYTE stream   일련의 BYTE로 구성됨.
본문 내에서 다른 구조를 참조할 경우에 사용됨.

 

ParameterSetObject 파일에서는 아래와 같이 정의합니다.

 

 정리(예시)

 

표 만들기를 통해 몇 가지 TYPE에 대해 정리한 것입니다.

먼저  ALT + SHIFT + H를 눌러 매크로 정의를 해보겠습니다.

매크로 정의 후 아래와 같이 표를 생성했습니다.

 

그다음 ALT + SHIFT + X를 눌러 매크로 기록을 중단하고,

기록된 내용을 보면 다음과 같습니다.

function OnScriptMacro_script26()
{
	HAction.GetDefault("TableCreate", HParameterSet.HTableCreation.HSet);
	with (HParameterSet.HTableCreation)
	{
		Rows = 5;
		Cols = 4;
		WidthType = 1;
		HeightType = 1;
		WidthValue = MiliToHwpUnit(178.0);
		HeightValue = MiliToHwpUnit(22.0);
		CreateItemArray("ColWidth", 4);
		ColWidth.Item(0) = MiliToHwpUnit(40.9);
		ColWidth.Item(1) = MiliToHwpUnit(40.9);
		ColWidth.Item(2) = MiliToHwpUnit(40.9);
		ColWidth.Item(3) = MiliToHwpUnit(40.9);
		CreateItemArray("RowHeight", 5);
		RowHeight.Item(0) = MiliToHwpUnit(3.4);
		RowHeight.Item(1) = MiliToHwpUnit(3.4);
		RowHeight.Item(2) = MiliToHwpUnit(3.4);
		RowHeight.Item(3) = MiliToHwpUnit(3.4);
		RowHeight.Item(4) = MiliToHwpUnit(3.4);
		TableProperties.CellSpacing = MiliToHwpUnit(0.0);
		TableProperties.RepeatHeader = 1;
		TableProperties.PageBreak = TableBreak("Cell");
		TableProperties.HorzRelTo = HorzRel("Para");
		TableProperties.Width = 50460;
		TableProperties.TableBorderFill.BorderApplyTo = 0;
	}
	HAction.Execute("TableCreate", HParameterSet.HTableCreation.HSet);

 

그 다음 한글 공식문서 중 ParameterSetObject 파일 내용에서

TableCreation을 찾아보면 다음과 같이 되어 있습니다.

 

먼저 Rows Cols 속성은 PIT_UI2로 되어있고, 행과 열의 수를 나타냅니다.

전문적인 내용은 뒤로하고 PIT_UI2는 양의 정수가 들어가는 것으로 추측할 수 있습니다.

Rows = 5;
Cols = 4;

 

728x90

그 다음 WidthTypeHeightType를 보면 PIT_UI1으로 되어있습니다.

처음 표를 만들 때 아래 그림의 부분을 정의한 것입니다.

너비"단에 맞춤", "문단에 맞춤", "임의 값" 을 선택할 수 있고

높이"자동"과 "임의 값"을 선택할 수 있습니다.

이를 통해 유추해보면 PIT_UI1한글 프로그램이 이미 정해놓은 무언가를 선택하는 것으로 추측할 수 있습니다.



 

그리고 WidthValue, HeightValuePIT_I로 되어있으며 MiliToHwpUnit() 함수를 통해

밀리미터를 HwpUnit라는 한글에서 사용하는 수치로 변환된 값을 담게 되므로 

어떤 숫자가 들어가는 것으로 추측할 수 있습니다.

WidthType = 1;
HeightType = 1;
WidthValue = MiliToHwpUnit(178.0);
HeightValue = MiliToHwpUnit(22.0);

 

ColWidthRowHeight를 통해 행의 너비와 열의 높이를 설정할 수 있으며,

이 표는 4개의 행과 5개의 열을 가지고 있습니다.

PIT_ARRAY는 각각의 행과 열의 속성을 배열에 담고 있다는 의미로 볼 수 있습니다.

매크로 코드를 살펴보면 아랫부분입니다.

CreateItemArray("ColWidth", 4);
ColWidth.Item(0) = MiliToHwpUnit(40.9);
ColWidth.Item(1) = MiliToHwpUnit(40.9);
ColWidth.Item(2) = MiliToHwpUnit(40.9);
ColWidth.Item(3) = MiliToHwpUnit(40.9);

CreateItemArray("RowHeight", 5);
RowHeight.Item(0) = MiliToHwpUnit(3.4);
RowHeight.Item(1) = MiliToHwpUnit(3.4);
RowHeight.Item(2) = MiliToHwpUnit(3.4);
RowHeight.Item(3) = MiliToHwpUnit(3.4);
RowHeight.Item(4) = MiliToHwpUnit(3.4);

 

위 코드에서도 각각 CreateItemArryy를 통해 행과 열의 크기를 지정해 주고

각각의 행과 열의 너비와 높이를 지정해 주었습니다.

 

마지막으로 TablePropertiesPIT_SET으로 되어있고,

매크로 코드를 살펴보면 아래와 같이 되어 있습니다.

별도의 속성을 가지고 있다고 추측할 수 있습니다.

그리고 이 속성을 별도로 컨트롤할 수도 있습니다.

TableProperties.CellSpacing = MiliToHwpUnit(0.0);
TableProperties.RepeatHeader = 1;
TableProperties.PageBreak = TableBreak("Cell");
TableProperties.HorzRelTo = HorzRel("Para");
TableProperties.Width = 50460;
TableProperties.TableBorderFill.BorderApplyTo = 0;

 

해당 속성은 공식 문서를 보시면 아래와 같이 되어있습니다.

아래 문서에서 TableProperties는 PIT_SET 타입이고

표 초기속성은 HTable를 참고하라고 되어있습니다.

 

ParameterSetObject 파일에서 HTalbe를 살펴보면 

아래와 같이 속성을 지정할 수 있습니다.

아래 그림은 일부만 잘라온 것으로 더 많은 속성이 있습니다.

 

 마치며

 

저 같은 경우에는 이 내용 자체가 처음에는 잘 이해를 할 수 없었습니다.

자동화를 조금씩 공부하면서 하나하나 찾다 보니,

정확히 설명하기는 어렵지만 해당 내용이 무엇을 의미하는지

대략적으로 알 수 있게 된 경우입니다.

 

이걸 몰라도 한글 자동화가 안 되는 건 아니지만,

대략적으로나마 알게 되니 공식문서가 의미하는 바를 

더 알기 쉽게 되고, 찾는 것도 더 수월하게 되었습니다.

여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.

파이썬 공부하기

728x90
반응형