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

janggetup님의 프로필 이미지
janggetup

작성한 질문수

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

API 버그를 활용한 서체 일괄체크 및 변경

API 버그를 활용한 서체 일괄 변경이 잘 안됩니다.

해결된 질문

작성

·

294

·

수정됨

2

2024-02-12_23-14-49.jpgAPI 버그를 활용한 서체 일괄체크 및 변경 파이썬코드가 작동안하는데 한글의 버그가 패치되었는지~

글자색_변경하기()함수는 결과가 나오는데 모든_줄간격_변경하기(줄간격), 모든_글자색_변경하기(r, g, b) 함수는 실행시켜도 한글 문서에 아무런 변화가 없습니다.~

 

 

답변 2

2

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

janggetup님 안녕하세요?

지금 제가 쓰고 있는 버전은 한글2018인데요.

아직 일괄변경이 잘 됩니다.

예를 들어 문서 내 모든 서체를 "휴먼명조"로 일괄변경하고 싶으면,

def 서체일괄변경(src="모두", dst="휴먼명조"):
    pset = hwp.HParameterSet.HFindReplace
    hwp.HAction.GetDefault("AllReplace", pset.HSet)
    pset.MatchCase = 0
    pset.AllWordForms = 0
    pset.SeveralWords = 0
    pset.UseWildCards = 0
    pset.WholeWordOnly = 0
    pset.AutoSpell = 1
    pset.Direction = hwp.FindDir("Forward")
    pset.IgnoreFindString = 0
    pset.IgnoreReplaceString = 0
    pset.FindString = ""
    pset.ReplaceString = ""
    pset.FindCharShape.FontTypeUser = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameUser = src
    pset.FindCharShape.FontTypeSymbol = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameSymbol = src
    pset.FindCharShape.FontTypeOther = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameOther = src
    pset.FindCharShape.FontTypeJapanese = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameJapanese = src
    pset.FindCharShape.FontTypeHanja = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameHanja = src
    pset.FindCharShape.FontTypeLatin = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameLatin = src
    pset.FindCharShape.FontTypeHangul = hwp.FontType("TTF")
    pset.FindCharShape.FaceNameHangul = src
    
    pset.ReplaceCharShape.FontTypeUser = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameUser = dst
    pset.ReplaceCharShape.FontTypeSymbol = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameSymbol = dst
    pset.ReplaceCharShape.FontTypeOther = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameOther = dst
    pset.ReplaceCharShape.FontTypeJapanese = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameJapanese = dst
    pset.ReplaceCharShape.FontTypeHanja = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameHanja = dst
    pset.ReplaceCharShape.FontTypeLatin = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameLatin = dst
    pset.ReplaceCharShape.FontTypeHangul = hwp.FontType("TTF")
    pset.ReplaceCharShape.FaceNameHangul = dst
    pset.ReplaceMode = 1
    pset.IgnoreMessage = 1
    pset.HanjaFromHangul = 0
    pset.FindJaso = 0
    pset.FindRegExp = 0
    pset.FindStyle = ""
    pset.ReplaceStyle = ""
    pset.FindType = 1
    hwp.HAction.Execute("AllReplace", pset.HSet)    

라고 정의하고 실행하면

image

이렇게 일괄변경이 됩니다.

한/글 버전이 달라서 그러는 것 같지는 않고,
혹시 작성하신 코드를 보여주시거나,
처리하시려는 작업을 알려주시면
관련 코드를 작성해드려보겠습니다.

 

행복한 하루 되세요!!!

혹시 글자크기도 조정일괄로 하고 싶은데 가능할까요?

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

글자크기 일괄조절은 pyhwpx의 set_font 메서드를 쓰시는 걸 추천드립니다.

아래는 문서 내 모든 영역의 글자크기를 10으로 조정하는 코드입니다.

# 수정을 원하는 문서를 열어놓은 상태로 아래 코드 실행
from pyhwpx import Hwp

hwp = Hwp()

i = 0
while hwp.set_pos(i, 0, 0):
    hwp.SelectAll()
    hwp.set_font(Height=10)
    i += 1

실행화면은 아래와 같습니다.

image

도움이 되었길 바랍니다.

 

1

janggetup님의 프로필 이미지
janggetup
질문자

pset = hwp.HparameterSet.HFindReplace를 할당해서 사용해야 안전한거군요? 강의중 이 내용이 있었는데 이제서야 기억이 납니다. ^^ 감사합니다.~

janggetup님의 프로필 이미지
janggetup

작성한 질문수

질문하기