반응형
아래아한글에는 고유의 수식 언어인
HwpEqn이라는 체계가 있는데
이게 써볼수록 진국이다.
가재가 게편이라 그런지,
LaTeX과 유사한 듯 하면서도 HwpEqn이 더 간결하고 우월하다는 느낌도 든다.
하여튼,
어떤 분께서 한/글 개발자 포럼에 아래와 같은 질문을 남겨주셨다.
1. 기존의 오토메이션API를 사용하는 방식
기존 한/글 오토메이션API를 이용하여
문서 내의 모든 수식을 추출해 오는 (내가 아는 한 가장 간결한) 방법은 아래와 같다.
"""
각 수식 밑에 수식String 삽입하는 코드
"""
import os
import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.RegisterModule(
"FilePathCheckDLL", "FilePathCheckerModule")
hwp.Open(os.path.join(os.getcwd(), "수식샘플.hwp"))
ctrl = hwp.HeadCtrl
while ctrl:
if ctrl.UserDesc == "수식":
eqn_string = ctrl.Properties.Item("String")
hwp.SetPosBySet(ctrl.GetAnchorPos(0))
hwp.HAction.Run("MoveRight")
hwp.HAction.Run("BreakPara")
pset = hwp.HParameterSet.HInsertText
hwp.HAction.GetDefault("InsertText", pset.HSet)
pset.Text = eqn_string
hwp.HAction.Execute("InsertText", pset.HSet)
hwp.HAction.Run("BreakPara")
hwp.HAction.Run("BreakPara")
ctrl = ctrl.Next
pyhwpx를 사용하는 조금 더 간결한 방식
그리고 pyhwpx를 사용하는 방식도 위와 비슷한데,
hwp.ctrl_list라는 속성을 만들어 둬서,
리스트 컴프리헨션 같은 파이썬 문법으로 간결하게 정보를 꺼내올 수도 있다.
수식 밑에 수식문자열을 삽입하는 코드는 아래와 같다.
from pyhwpx import Hwp
hwp = Hwp()
hwp.open("./수식샘플.hwp")
for ctrl in hwp.ctrl_list:
if ctrl.UserDesc == "수식":
hwp.move_to_ctrl(ctrl)
hwp.MoveRight()
hwp.BreakPara()
hwp.set_font(TextColor="Red")
hwp.insert_text(ctrl.Properties.Item("String"))
hwp.BreakPara()
파이써닉하게 모듈을 만들고 싶었다. for문을 쓸 수 있다는 것 자체가 내겐 행복이다.
실행결과는 동일하다. (삽입 글자색만 바꿔봤다.)
모듈을 내 입맛대로 만들었더니
내 맘에 쏙 드는 코드 스타일이 나오기는 하는데
많은 이들이 좋아해줬으면 더 좋겠다ㅎ
이번 포스팅은 여기서 마침!
반응형
'아래아한글 자동화 > pyhwpx 사용법' 카테고리의 다른 글
[pyhwpx] 페이지별로 분할 저장하기 (3) | 2024.02.10 |
---|---|
[pyhwpx] 한 줄의 코드로 자간자동조절 : auto_spacing (0) | 2024.01.26 |
[pyhwpx] 폰트 설정을 위한 set_font 메서드 (1) | 2024.01.26 |
댓글