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

윤병현님의 프로필 이미지
윤병현

작성한 질문수

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

폰트 설정 뒤 텍스트 입력이 안되는 문제

해결된 질문

작성

·

125

1

안녕하세요 일코님!

글자속성 부분 강의를 들으면서, 매크로로도 확인해서 함수를 작성해보았는데요.

 

먼저 텍스트 입력 함수입니다.

def 텍스트입력(text):
    hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet)
    hwp.HParameterSet.HInsertText.Text = text
    hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet)

 

그다음 폰트를 설정하는 함수입니다.

def 폰트설정(글꼴,크기):    
    hwp.HAction.GetDefault("CharShape", hwp.HParameterSet.HCharShape.HSet);
    hwp.HParameterSet.HCharShape.FaceNameUser = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeUser = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.FaceNameSymbol = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeSymbol = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.FaceNameOther = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeOther = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.FaceNameJapanese = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeJapanese = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.FaceNameHanja = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeHanja = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.FaceNameLatin = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeLatin = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.FaceNameHangul = f"{글꼴}"
    hwp.HParameterSet.HCharShape.FontTypeHangul = hwp.FontType("TTF")
    hwp.HParameterSet.HCharShape.Height = hwp.PointToHwpUnit(크기)
    hwp.HAction.Execute("CharShape", hwp.HParameterSet.HCharShape.HSet)

이렇게 하니까, 변경까지는 아주 잘 되는데,

 

변경후에 텍스트를 입력하면 커서만 깜빡이고 텍스트가 입력되질 않네요..

매크로로 해서 그런가 싶어서, 다시 일코님이 작성해주신 코드를 복붙해서 사용해보았는데

 

        charshape = hwp.XHwpDocuments.Item(0).XHwpCharacterShape
        charshape.Height = 5000  # 5000 HwpUnit = 50 pt
        charshape.Italic = True  # 이탤릭
        charshape.Bold = True  # 진하게
        charshape.ShapeNormal()  # 글자크기와 서체를 제외한 모든 속성 초기화

 

이코드도 동일하게 적용까지는 되는데,, 텍스트가 입력이 되지 않네요.
움짤로는 아래와 같습니다!

 


 

답변 1

1

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

이상하네요..

액션의 디폴트값을 추가로 지정해야 하거나,

현재 위치의 디폴트값이 문제가 있는 듯도 한데,

함수를 직접 지정하지 마시고

hwp.insert_text와 hwp.set_font 메서드를 사용해보시겠어요?

제법 오래 고민해서 만든 메서드인 만큼..

왠만한 경우에는 오류가 나지 않을 것입니다.

image

hwp.insert_text("폰트 설정 전에도 잘 되고\r\n")
hwp.set_font(Height=20, FaceName="함초롬돋움")
hwp.insert_text("폰트 설정 후에도 잘 됨\r\n")
hwp.set_font(Height=50, FaceName="나눔고딕")
hwp.insert_text("계속 잘 되어야 정상임\r\n")

 

hwp.set_font의 파라미터 목록은 아래를 참고해주세요.

image(출처 : blog.naver.com/pythonrpa)

윤병현님의 프로필 이미지
윤병현
질문자

감사합니다!! 해결되었습니다.

윤병현님의 프로필 이미지
윤병현

작성한 질문수

질문하기