인프런 커뮤니티 질문&답변
API 버그를 활용한 서체 일괄 변경이 잘 안됩니다.
해결된 질문
작성
·
390
·
수정됨
답변 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)    라고 정의하고 실행하면

이렇게 일괄변경이 됩니다.
한/글 버전이 달라서 그러는 것 같지는 않고,
혹시 작성하신 코드를 보여주시거나,
처리하시려는 작업을 알려주시면
관련 코드를 작성해드려보겠습니다.
행복한 하루 되세요!!!
일코
지식공유자
글자크기 일괄조절은 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실행화면은 아래와 같습니다.

도움이 되었길 바랍니다.
1

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







 API 버그를 활용한 서체 일괄체크 및 변경 파이썬코드가 작동안하는데 한글의 버그가 패치되었는지~
API 버그를 활용한 서체 일괄체크 및 변경 파이썬코드가 작동안하는데 한글의 버그가 패치되었는지~ 
혹시 글자크기도 조정일괄로 하고 싶은데 가능할까요?