# 문단모양 관련 오류

**URL:** https://forum.developer.hancom.com/t/topic/2209
**Category:** 웹한글 기안기
**Created:** [2월 9, 2025, 11:46오전 UTC](https://forum.developer.hancom.com/t/topic/2209 "2025-02-09T11:46:03Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![user391](https://avatars.discourse-cdn.com/v4/letter/u/45deac/32.png) [@user391](https://forum.developer.hancom.com/u/user391)
#### Post date: [2월 9, 2025, 11:46오전 UTC](https://forum.developer.hancom.com/t/topic/2209/1 "2025-02-09T11:46:03Z")

</div>

문단 모양을 자동으로 넣고 있습니다.

```auto
var MiliToHwpUnit = function (n) {
    return parseInt(n * 283465 / 1000);
}

PS = HwpCtrl.CreateAction("ParagraphShape");
dPSet = PS.CreateSet();
PS.GetDefault(dPSet);
dPSet.SetItem("LeftMargin", MiliToHwpUnit(6.8)); //1.416을 나눈 값을 넣어야 함(왜 그런진 모름)
PS.Execute(dPSet);

```

왼쪽 여백 뿐 아니라 첫 줄 내어쓰기(Indentation)도 왜 그런진 모르겠는데 1.416을 넣어야 원하는 수치가 들어갑니다.

또한 자동으로 생성되었을 때 설정한 수치가 아닌 다른 곳에 위치합니다.(문단 모양을 열어서 확인 버튼을 누르면 설정한 값으로 정상 적용되는 것 같습니다.

데모 버전의 오류인건지 확인 부탁드립니다.  
가능하면 왜 1.416을 나누는건지도 알려주시면 감사하겠습니다.

---

<div class="post-metadata">

### Author: ![bart](https://avatars.discourse-cdn.com/v4/letter/b/f19dbf/32.png) [@bart](https://forum.developer.hancom.com/u/bart)
#### Post date: [2월 11, 2025, 12:39오전 UTC](https://forum.developer.hancom.com/t/topic/2209/2 "2025-02-11T00:39:37Z")

</div>

안녕하세요.

문단모양 LeftMargin 의 단위는 URC 이고,  
웹한글 기안기에서 표현되는 단위는 Point(pt) 입니다.

밀리미터 단위로 값을 입력하셔서 오차가 있는것 같습니다.  
URC 단위 값을 입력하시려면 HwpUnit 값 \* 2 로 입력해주시면 됩니다.

URC 단위에 대해서는 아래 내용을 참고해주시고  
자세한 내용은 [개발 가이드 | 한컴디벨로퍼](https://developer.hancom.com/hwpautomation) 에 첨부된  
ParameterSetObject.pdf 파일을 참고해주시면 될것 같습니다.

- HWPUNIT : 7200분의 1 인치
- URC
  - 32 bit 정수값. HWPUNIT 또는 Relative Character Position을 나타낸다.
  - Bit0 = 0 인 경우, HWPUNIT이며 Bit1~Bit31에 HWPUNIT에 해당하는 값이 저장된다.
  - Bit0 = 1 인 경우, Relative Character이며 Bit1~Bit31에는 n \* 100의 값을 갖는다.

```c++
 #define HWPURC_MAKE(type, value) (((value) << 1) | ((type) & 1))
 #define HWPURC_TYPE(data) ((data) & 1)
 #define HWPURC_VALUE(data) ((data) >> 1)

```

감사합니다.

---

<div class="post-metadata">

### Author: ![user391](https://avatars.discourse-cdn.com/v4/letter/u/45deac/32.png) [@user391](https://forum.developer.hancom.com/u/user391)
#### Post date: [2월 12, 2025, 3:55오전 UTC](https://forum.developer.hancom.com/t/topic/2209/4 "2025-02-12T03:55:54Z")

</div>

혹시 js로는 어떻게 해야하는지 예시 코드를 하나 주실 수 있나요?  
문단 모양을 눌러서 봤을 때 숫자는 잘 들어가있는데,  
입력한 값에 따라 커서가 의도한 곳에 있을 때도 있고, 아닐 때도 있어서요

---

<div class="post-metadata">

### Author: ![bart](https://avatars.discourse-cdn.com/v4/letter/b/f19dbf/32.png) [@bart](https://forum.developer.hancom.com/u/bart)
#### Post date: [2월 12, 2025, 4:50오전 UTC](https://forum.developer.hancom.com/t/topic/2209/5 "2025-02-12T04:50:57Z")

</div>

위 코드는 안내드린 링크의 첨부파일에 안내된 내용입니다.

javascript 로는 아래와 같이 사용하시면 될것 같습니다.

```javascript
    HWPURC_MAKE = function (type, value) {
        return (((value) << 1) | ((type) & 1));
    };
    HWPURC_TYPE = function (d) {
        return ((d) & 1);
    };
    HWPURC_VALUE = function (d) {
        return ((d) >> 1);
    };

```

```javascript
HWPURC_MAKE(0, value); // value 는 HWPUNIT 단위

```

---

<div class="post-metadata">

### Author: ![user391](https://avatars.discourse-cdn.com/v4/letter/u/45deac/32.png) [@user391](https://forum.developer.hancom.com/u/user391)
#### Post date: [2월 12, 2025, 2:34오후 UTC](https://forum.developer.hancom.com/t/topic/2209/6 "2025-02-12T14:34:12Z")

</div>

답변 감사합니다.

type을 0으로 해야 URC라고 전 답변에서 말씀하셨는데,  
type을 1로 해도 n\*100의 값을 정수로 입력해야 정상 동작하는 것 같습니다. 혹시 맞는지 확인 부탁드립니다.

```auto
PS = HwpCtrl.CreateAction("ParagraphShape");
dPSet = PS.CreateSet();
PS.GetDefault(dPSet);
dPSet.SetItem("LeftMargin", HWPURC_MAKE(0, 960)); //9.6pt를 의도함
PS.Execute(dPSet);

```

---

<div class="post-metadata">

### Author: ![cgkang](https://avatars.discourse-cdn.com/v4/letter/c/bc79bd/32.png) [@cgkang](https://forum.developer.hancom.com/u/cgkang)
#### Post date: [2월 12, 2025, 10:45오후 UTC](https://forum.developer.hancom.com/t/topic/2209/7 "2025-02-12T22:45:58Z")

</div>

안녕하세요.

type이 정수형이라 그렇습니다.  
위에 설명드린대로 type을 ‘0’ 으로 하시고 코드를 작성하시는게 좋을것 같습니다.

감사합니다.

---

<div class="post-metadata">

### Author: ![cgkang](https://avatars.discourse-cdn.com/v4/letter/c/bc79bd/32.png) [@cgkang](https://forum.developer.hancom.com/u/cgkang)
#### Post date: [2월 12, 2025, 11:59오후 UTC](https://forum.developer.hancom.com/t/topic/2209/8 "2025-02-12T23:59:36Z")

</div>

추가로 설명을 드리면,

ParameterSetObject.pdf 를 참고 하시면 되는데,

HWPUNIT : 7200분의 1 인치

URC  
: 32 bit 정수값. HWPUNIT 또는 Relative Character Position을 나타낸다.  
: Bit0 = 0 인 경우, HWPUNIT이며 Bit1~Bit31에 HWPUNIT에 해당하는 값이 저장된다.  
: Bit0 = 1 인 경우, Relative Character이며 Bit1~Bit31에는 n \* 100의 값을 갖는다

추가로 문의 사항이 있으시면 언제든지 올려 주시기 바랍니다.

감사합니다.
