현재 용지정보 가져오기 PageSetup

(예전 커뮤니티(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.10)

ParameterSet Table.hwp 파일 87번에 PageDef:구역 내의 용지 설정 속성
가보시면 필요한 ItemID도 나열되어 있으므로 참고하시면 됩니다.
매뉴얼이 다소 복잡해 보이지만, 예제들을 자세히 읽어보시면
필요할법한, 그리고 유용한 구현방법이 대부분 들어있습니다.
언어는 달라도 API는 동일하니까, 다른언어 예제도 읽어보시기 바랍니다…

smj0226 (2020.03.10)

추가로 궁금하신 게 있으시면 유튜브 “회사원코딩” 채널 댓글이나,
martinii.fun@지메일로 보내주시면 도움 드리고 싶습니다.
감사합니다.

easyedu (2020.03.11)

pageDef 및 itemID 들의 적용방법을 몰랐는데 좋은 정보 감사드립니다.
여러곳에 적용할수 있겠네요.

1개의 좋아요

안녕하세요.
easyedu 님께서 질문하신 내용에 대해 다시 문의 드립니다.
혹시 파이썬이 아닌 다른 언어(C# 혹은 visual basic 등)로 아이템(용지방향, 여백 등등)의 값을 가져오는
방법을 찾으셨는지요??
감사합니다.

한글 오토메이션 - ParameterSet Object 를 참고하세요

아래와 같이 하면 C# 에서 용지 크기 및 여백 등을 확인 할 수 있습니다.

//한글 단위(hu)를 mm로 변환
private double hu2mm(double value)
{
return (Math.Round(value / 283.46));
}

private void button3_Click(object sender, EventArgs e)
{
var act = hwp.CreateAction(“PageSetup”);
var set = act.CreateSet();
act.GetDefault(set);
double paper_width = set.Item(“PageDef”).Item(“PaperWidth”); // 용지 가로 크기
double paper_height = set.Item(“PageDef”).Item(“PaperHeight”); // 용지 세로 크기
byte landscape = set.Item(“PageDef”).Item(“Landscape”); // 용지 방향 (0 : 좁게, 1 : 넓게)
double top_margin = set.Item(“PageDef”).Item(“TopMargin”); // 위 마진
double bottom_margin = set.Item(“PageDef”).Item(“BottomMargin”); // 아래 마진
double left_margin = set.Item(“PageDef”).Item(“LeftMargin”); // 왼쪽 마진
double right_margin = set.Item(“PageDef”).Item(“RightMargin”); // 오른족 마진
double header_len = set.Item(“PageDef”).Item(“HeaderLen”); // 머리말 길이
double footer_len = set.Item(“PageDef”).Item(“FooterLen”); // 꼬리말 길이
double gutter_len = set.Item(“PageDef”).Item(“GutterLen”); // 제본 여백
byte gutter_type = set.Item(“PageDef”).Item(“GutterType”); // 편집 방법(0:한쪽 편집, 1: 맞쪽 편집, 2: 위로 넘기기)

        Debug.WriteLine("용지 가로 크기 : " + hu2mm(paper_width).ToString() + " mm");
        Debug.WriteLine("용지 세로 크기 : " + hu2mm(paper_height).ToString() + " mm");
        if (landscape == 1)
        {
            Debug.WriteLine("용지방향 : 넓게(가로문서");
        }
        else
        {
            Debug.WriteLine("용지방향 : 좁게(세로문서)");
        }
        Debug.WriteLine("용지 방향 : " + hu2mm(paper_height).ToString() + " mm");
        Debug.WriteLine("윗쪽 여백 : " + hu2mm(top_margin).ToString() + " mm");
        Debug.WriteLine("아랫쪽 여백 : " + hu2mm(bottom_margin).ToString() + " mm");
        Debug.WriteLine("왼쪽 여백 : " + hu2mm(left_margin).ToString() + " mm");
        Debug.WriteLine("오른쪽 여백 : " + hu2mm(right_margin).ToString() + " mm");
        Debug.WriteLine("머리말  : " + hu2mm(right_margin).ToString() + " mm");
        Debug.WriteLine("꼬리말 : " + hu2mm(right_margin).ToString() + " mm");
        Debug.WriteLine("제본 여백 : " + hu2mm(gutter_len).ToString() + " mm");

        if (gutter_type == 0)
        {
            Debug.WriteLine("편집 방법 : " + "한쪽 편집");
        }
        else if (gutter_type == 1)
        {
            Debug.WriteLine("편집 방법 : " + "맞쪽 편집");
        }
        else if (gutter_type == 2)
        {
            Debug.WriteLine("편집 방법 : " + "위로 넘기기");
        }
    }