문단 모양을 자동으로 넣고 있습니다.
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을 나누는건지도 알려주시면 감사하겠습니다.
bart
2월 11, 2025, 12:39오전
2
안녕하세요.
문단모양 LeftMargin 의 단위는 URC 이고,
웹한글 기안기에서 표현되는 단위는 Point(pt) 입니다.
밀리미터 단위로 값을 입력하셔서 오차가 있는것 같습니다.
URC 단위 값을 입력하시려면 HwpUnit 값 * 2 로 입력해주시면 됩니다.
URC 단위에 대해서는 아래 내용을 참고해주시고
자세한 내용은 개발 가이드 | 한컴디벨로퍼 에 첨부된
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의 값을 갖는다.
#define HWPURC_MAKE(type, value) (((value) << 1) | ((type) & 1))
#define HWPURC_TYPE(data) ((data) & 1)
#define HWPURC_VALUE(data) ((data) >> 1)
감사합니다.
혹시 js로는 어떻게 해야하는지 예시 코드를 하나 주실 수 있나요?
문단 모양을 눌러서 봤을 때 숫자는 잘 들어가있는데,
입력한 값에 따라 커서가 의도한 곳에 있을 때도 있고, 아닐 때도 있어서요
bart
2월 12, 2025, 4:50오전
5
위 코드는 안내드린 링크의 첨부파일에 안내된 내용입니다.
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);
};
HWPURC_MAKE(0, value); // value 는 HWPUNIT 단위
답변 감사합니다.
type을 0으로 해야 URC라고 전 답변에서 말씀하셨는데,
type을 1로 해도 n*100의 값을 정수로 입력해야 정상 동작하는 것 같습니다. 혹시 맞는지 확인 부탁드립니다.
PS = HwpCtrl.CreateAction("ParagraphShape");
dPSet = PS.CreateSet();
PS.GetDefault(dPSet);
dPSet.SetItem("LeftMargin", HWPURC_MAKE(0, 960)); //9.6pt를 의도함
PS.Execute(dPSet);
안녕하세요.
type이 정수형이라 그렇습니다.
위에 설명드린대로 type을 ‘0’ 으로 하시고 코드를 작성하시는게 좋을것 같습니다.
감사합니다.
추가로 설명을 드리면,
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의 값을 갖는다
추가로 문의 사항이 있으시면 언제든지 올려 주시기 바랍니다.
감사합니다.