안녕하세요.
아래 글을 검색하다가 님들께서 올려주신 댓글에 추가 문의가 있어서요…
(예전 커뮤니티(2016-2020) 사이트에서 옮겨온 글입니다: 번호 164 )
작성자: easyedu
날짜: 2020-03-03
용지 및 문단의 여백을 불러오기위해서
문단은
Hwpctrl.Parashape.item(“LeftMargin”) … 등을 사용하면 문단 여백을 가져올수 있지만,
메뉴얼 어딜봐도 용지 속성을 가져오는 방법이 없는것 같네요.
setitem으로 여백 설정후 값을 불러오는것말고
문서의 용지 여백을 구할수 있는 방법이 있을까요?
댓글
smj0226 (2020.03.10)
매뉴얼에 있습니다ㅜ 파이썬으로는
act = Hwpctrl.CreateAction("PageSetup")
set = act.CreateSet()
pset = set.CreateItemSet("PageDef", "PageDef")
act.GetDefault(set)
print(set.Item("PageDef").Item("TopMargin"))
smj0226 (2020.03.…
파이썬에서는 print(set.Item(“PageDef”).Item(“TopMargin”)) 방법으로 TopMargin 값이 정상적으로 보이는 것 같은데,
혹시 다른 언어 (visual basic 혹은 visual C#)로 용지방향(0 or 1), TopMargin 등등 속성 값을 가져올 수 있을까요?
고수님들의 조언 부탁드립니다.
visual C# 으로 구현해본 소스입니다.
아래 소스에서 TopMargin은 엉뚱한 8000 이라는 값을 보이네요… ㅜㅜ
용지방향의 경우 한글 매크로 저장~ 에서 추적한 변수는 PageDef.Landscape = 0 이렇게 보이던데,
파이썬이 아닌 c#이나 visual basic 등의 언어에서 어떻게 저 값들을 가져올 수 있을까요?
조언 부탁드립니다.
감사합니다. 꾸벅!!
private void button6_Click(object sender, EventArgs e)
{
HWPCONTROLLib.DHwpAction pageSetupAction2 = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction("PageSetup");
HWPCONTROLLib.DHwpParameterSet pageSet2 = (HWPCONTROLLib.DHwpParameterSet)pageSetupAction2.CreateSet();
HWPCONTROLLib.DHwpParameterSet pageItem2 = (HWPCONTROLLib.DHwpParameterSet)pageSet2.CreateItemSet("PageDef", "PageDef");
pageSetupAction2.GetDefault(pageItem2);
if (pageItem2.ItemExist("Landscape") == true)
{ MessageBox.Show("OK"); }
var aaa = Convert.ToUInt64(pageItem2.Item("TopMargin"));
textBox1.Text = Convert.ToString(aaa);
}
감사합니다.
1개의 좋아요
안녕하세요!
질문해주신 부분에서 ParameterSet을 가져오는 부분에서 오류가 있네요
HWPCONTROLLib.DHwpAction pageSetupAction2 = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction(“PageSetup”);
HWPCONTROLLib.DHwpParameterSet pageSet2 = (HWPCONTROLLib.DHwpParameterSet)pageSetupAction2.CreateSet();
여기까지는 Action을 생성하고 CreateSet을 해서 Set을 만들어주시는게 맞아요.
이후에 PageDef로 CreateItemSet을 다시 생성해주시는게 아니라
GetDefault로 먼저 ParameterSet을 가져온 이후에 pageSet2에서 Item으로 PageDef를 가져오고
그 담에 TopMargin을 얻어오면 정상적인 값을 얻을 수 있습니다.
정리하자면 아래 코드로 실행하시면 정상 동작 하실거에요.
HWPCONTROLLib.DHwpAction pageSetupAction2 = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction(“PageSetup”);
HWPCONTROLLib.DHwpParameterSet pageSet2 = (HWPCONTROLLib.DHwpParameterSet)pageSetupAction2.CreateSet();
pageSetupAction2.GetDefault(pageItem2);
HWPCONTROLLib.DHwpParameterSet pageDef = (HWPCONTROLLib.DHwpParameterSet)pageSet2.Item(“PageDef”);
var aaa = Convert.ToUInt64(pageDef.Item(“TopMargin”));
더 궁금하신 부분이 있으시다면 언제든지 문의주세요!!
2개의 좋아요
알려주신 대로 했더니 대체로(?) 정상적인 값을 가져옵니다. ^^
HWPCONTROLLib.DHwpAction pageSetupAction2 = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction(“PageSetup”);
HWPCONTROLLib.DHwpParameterSet pageSet2 = (HWPCONTROLLib.DHwpParameterSet)pageSetupAction2.CreateSet();
pageSetupAction2.GetDefault(pageSet2);
HWPCONTROLLib.DHwpParameterSet pageDef = (HWPCONTROLLib.DHwpParameterSet)pageSet2.Item(“PageDef”);
// error HWPCONTROLLib.DHwpParameterSet pageItem2 = (HWPCONTROLLib.DHwpParameterSet)pageSet2.CreateItemSet(“PageDef”, “PageDef”);
//var aaa = Convert.ToUInt64(pageDef.Item(“TopMargin”));
// error long aaa = Convert.ToUInt64(pageDef.Item(“TopMargin”));
double aaa;
aaa = Convert.ToDouble(pageDef.Item(“TopMargin”));
MessageBox.Show(Convert.ToString(aaa));
textBox1.Text = Convert.ToString(aaa);
그런데 위 소스에서 반환되는 값은 무조건 정수형으로만 나오던데 왜 그럴까요?
(불러오는 한글 파일의 여백이 1mm 이면 283, 10mm 이면 2834, 13mm이면 3685, 100mm이면 28346 …
hwpunit to mm 는 283.465으로 알고 있습니다만… ㅡㅡ )
hwpctrl 공부하는데 큰 도움이 되었습니다.
감사합니다.
1개의 좋아요
안녕하세요!
답변이 도움이 되셨다니 다행이네요
TopMargin의 Type은 PIT_I4로 정수형 타입으로 정의되어있어서 그렇습니다.
추가적인 질문이 있으시면 문의주세요!!
1개의 좋아요
jjeong 님 답변이 정말 큰 도움이 되었습니다. 감사합니다.
이번에는 "글상자를 그린 후 상자 안에 텍스트를 써야 하는데 상자 바깥으로 나옵니다."의 글제목으로 포럼에 다시 질문을 올렸는데 혹시 봐주실 수 있을까요?ㅜㅜ
다시 한번 감사드립니다.
1개의 좋아요