c# + hwpctrl 으로 용지설정(PageSetup) 정보 가져오는 방법이 없나요?

안녕하세요.

아래 글을 검색하다가 님들께서 올려주신 댓글에 추가 문의가 있어서요…

파이썬에서는 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개의 좋아요