인프런 커뮤니티 질문&답변

Hyunuk Seo님의 프로필 이미지
Hyunuk Seo

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

개요 다루기 질문(2)

해결된 질문

작성

·

23

·

수정됨

1

아래 질문한 사람입니다. ^^

답변 감사드립니다.

추가적으로 ctrl k + o 개요 번호모양 없음 지정하는 방법과

 

image.png

 

스타일의 커서 위치로 스타일 바꾸기가 가능할까요!?

요렇게 해봤는데 제가 바꾸고자 하는 스타일을 지정하는 방법을 모르겠습니다. ㅠ

    hwp.open(hwpx_file, arg="suspendpassword:false; forceopen:true; versionwarning:false")
    print('---------------------')
    print(hwp.find(src=contents[1], direction='AllDoc'), hwp.current_page)
    print('---------------------')
    print(hwp.find(src=contents[1], direction='AllDoc'), hwp.current_page)   
    print('---------------------')
    #hwp.HAction.Run("StyleShortcut3")

    hwp.hwp.HAction.GetDefault("StyleChangeToCurrentShape", hwp.hwp.HParameterSet.HStyleItem.HSet)
    hwp.hwp.HAction.Execute("StyleChangeToCurrentShape", hwp.hwp.HParameterSet.HStyleItem.HSet)

 

image.png

 

답변 1

1

일코님의 프로필 이미지
일코
지식공유자

현욱님 안녕하세요!

 

1. "개요번호모양 없음" 기능은

스타일들(0~9)의 개요번호를 임의로 지우는 일련의 코드모음입니다.

파이썬에서는 아래와 같이 구현하실 수 있습니다.

from pyhwpx import Hwp

hwp = Hwp()

def 개요번호없음():
    pset = hwp.HParameterSet.HSecDef
    hwp.HAction.GetDefault("OutlineNumber", pset.HSet)
    # 개요번호와 텍스트 사이의 간격("본문과의 배치" = 텍스트%)
    pset.OutlineShape.TextOffsetLevel0 = 0  
    pset.OutlineShape.TextOffsetLevel1 = 0
    pset.OutlineShape.TextOffsetLevel2 = 0
    pset.OutlineShape.TextOffsetLevel3 = 0
    pset.OutlineShape.TextOffsetLevel4 = 0
    pset.OutlineShape.TextOffsetLevel5 = 0
    pset.OutlineShape.TextOffsetLevel6 = 0
    pset.OutlineShape.TextOffsetLevel7 = 0
    pset.OutlineShape.TextOffsetLevel8 = 0
    pset.OutlineShape.TextOffsetLevel9 = 0

    # 번호 서식 문자열("^1." 또는 "^1-^2-^3." 등. 여기서 ^정수는 해당수준 개요번호)
    pset.OutlineShape.StrFormatLevel0 = ""
    pset.OutlineShape.StrFormatLevel1 = ""
    pset.OutlineShape.StrFormatLevel2 = ""
    pset.OutlineShape.StrFormatLevel3 = ""
    pset.OutlineShape.StrFormatLevel4 = ""
    pset.OutlineShape.StrFormatLevel5 = ""
    pset.OutlineShape.StrFormatLevel6 = ""
    pset.OutlineShape.StrFormatLevel7 = ""
    pset.OutlineShape.StrFormatLevel8 = ""
    pset.OutlineShape.StrFormatLevel9 = ""

    # 번호 모양("HangulSyllable", "CircledDigit", "HangulJamo", "RomanSmall" 등)
    # pset.OutlineShape.NumFormatLevel0 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel1 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel2 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel3 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel4 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel5 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel6 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel7 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel8 = hwp.NumberFormat("Digit")
    # pset.OutlineShape.NumFormatLevel9 = hwp.NumberFormat("Digit")

    # pset.OutlineShape.NewList = 1
    # pset.HSet.SetItem("ApplyClass", 24)
    pset.HSet.SetItem("ApplyTo", 3)
    return hwp.HAction.Execute("OutlineNumber", pset.HSet)

위 함수를 정의해 두고 개요번호없음을 실행해보시면,

모든 스타일의 개요가 사라지는 것을 확인하실 수 있습니다.

녹화_2024_12_02_19_18_43_631.gif

 

함수를 적절히 활용하면, 아래처럼 개요번호를 임의 서식으로 만들 수도 있겠습니다.

녹화_2024_12_02_19_29_12_279.gif

보여주신 코드 중에, hwp.hwp.HAction.Run에 hwp는 왜 두 번 넣으신 거죠?
그냥 hwp.HAction.Run이나 hwp.Run으로 구현하시면 됩니다.

 

pyhwpx의 Hwp클래스 내부적으로는,
self.hwp를 통해 hwp 애플리케이션의 API를 직접 참조하는 방식을 쓰고 있기는 합니다.
(기존 오토메이션API의 코딩방식을 그대로 사용할 수 있게 하기 위함입니다.)

 

 

그리고 2번에 대한 부분은

다음 질문에 답변으로 달아놓았습니다. 참고해주시기 바랍니다.

링크

 

감사합니다.

행복한 하루 되세요!!!~

Hyunuk Seo님의 프로필 이미지
Hyunuk Seo
질문자

아 이래야 동작하는줄 알았습니다. 감사합니다 함수로 하면되겠네요 ^^오늘도 많이 배우고 갑니다.

Hyunuk Seo님의 프로필 이미지
Hyunuk Seo
질문자

아 그렇군요 ㅋㅋ 감사합니다.

일코님의 프로필 이미지
일코
지식공유자

포럼에 질문하러 들어갔다가 무심코 검색해봤더니

이미 관련한 질문과 답변이 여러 번 있었네요..^^;

(이래서 검색을 생활화해야ㅠㅠㅠ)

퇴근하고 저녁에 관련 답변 달아두도록 하겠습니다.

행복한 하루 되세요^^

Hyunuk Seo님의 프로필 이미지
Hyunuk Seo

작성한 질문수

질문하기