mirusu400 / hwpapi

python wrapper for HWPFrame.HwpObject using win32com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HwpApi

여기서 Tutorials을 볼 수 있습니다.

Install

이 패키지는 win32com을 통해 좀더 쉽게 한글 자동화를 하기 위한 패키지 입니다. 따라서, 한글 오피스가 설치된 Windows에서만 작동합니다. 리눅스나 한컴 오피스가 설치된 Mac OS에서는 작동하지 않습니다.

다른 일반적인 패키지와 같이 아래 명령어를 입력하면 설치할 수 있습니다.

pip install hwpapi

How to use

기본적으로는 wi32com을 통한 한컴 오피스 자동화를 보다 쉽게 사용하기 위해 개발한 패키지 입니다.

기존의 연동성을 최대한 유지하면서도 파이써닉하게 코드를 짤 수 있도록 개선하고자 하였습니다.

nbdev에서 권장하는 스타일로 작성되다보니 jupyter notebook이나 jupyter lab에서는 자동완성이 잘 작동되지만, VS Code에서는 자동완성이 작동 안할 수 있습니다.

기존 코드와 연동성 비교하기

회사원 코딩에 가보시면 아래와 같이 자동화 코드가 있습니다.

import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True

act = hwp.CreateAction("InsertText")
pset = act.CreateSet()
pset.SetItem("Text", "Hello\r\nWorld!")
act.Execute(pset)

이 코드는 기본적으로 장황하다고 볼 만한 상황입니다. 이 코드를 HwpApi를 사용하면 아래와 같이 간결하게 정리가 됨을 볼 수 있습니다.

from hwpapi.core import App

app = App()
action = app.actions.InsertText()
p = action.pset
p.Text = "Hello\r\nWorld!"
action.run()
True

이렇게 자주 사용하는 기능은 함수로 만들었습니다.

app.insert_text("Hello\r\nWorld!")

글자 모양을 바꾸는 것은 자주 있는 함수 입니다. win32com을 사용하면 아래와 같이 작성해야 합니다.

Act = hwp.CreateAction("CharShape")
Set = Act.CreateSet()
Act.GetDefault(Set) 
Set.Item("Italic")
Set.SetItem("Italic", 1)
Act.Execute(Set)

이렇게 자주 사용되는 기능은 함수로 만들어 사용할 수 있게 했습니다.

app.set_charshape(italic=True)
True

코드를 보시면 hwp를 세팅하는 부분이 간략해졌습니다. 또한 파라미터 설정이 파이썬 객체처럼 설정할 수 있게 변경 되어 있는 것을 볼 수 있습니다.

이런 식으로 파이썬에서 사용하기 쉽게 만들었습니다.

왜 HwpApi를 만들었나요?

가장 큰 이유는 스스로 사용하기 위해서 입니다. 직장인으로 많은 한글 문서를 편집하고 작성하곤 하는데 단순 반복업무가 너무 많다는 것이 불만이었습니다. 이런 문제를 해결하는 방법으로 한글 자동화에 대한 이야기를 파이콘에서 보게 되었습니다. 특히 ‘회사원 코딩’ 님의 블로그와 영상이 많은 참조가 되었습니다.

다만 그 과정에서 설명자료가 부족하기도 하고 예전에 작성했던 코드들을 자꾸 찾아보게 되면서 아래아 한글 용 파이썬 패키지가 있으면 좋겠다는 생각을 했습니다. 특히 업무를 하면서 엑셀 자동화를 위해 xlwings를 사용해 보면서 파이썬으로 사용하기 쉽게 만든 라이브러리가 코딩 작업 효율을 엄청 올린다는 것을 깨닫게 되었습니다.

제출 마감까지 해야 할 일들을 빠르게 하기 위해서 빠르게 한글 자동화가 된다면 좋겠다는 생각으로 만들게 되었습니다.

기본적인 철학은 xlwings을 따라하고 있습니다. 기본적으로는 자주 쓰이는 항목들을 사용하기 쉽게 정리한 메소드 등으로 구현하고, 부족한 부분은 App.api형태로 win32com으로 하는 것과 동일한 작업이 가능하게 하여 한글 api의 모든 기능을 사용할 수 있도록 구현하였습니다.

메소드로 만드는 것에는 아직 고민이 있습니다. chain과 같은 형태로 여러가지 콤비네이션을 사전에 세팅을 해야 하나 싶은 부분도 있고 실제로 유용하게 사용할 수 있는 여러가지 아이템 등도 있어서 어떤 부분까지 이 패키지에 구현할지는 고민하고 있습니다.

다만 이런 형태의 작업을 통해서 어쩌면 hwp api wrapper가 활성화 되어서 단순 작업을 자동화 할 수 있기를 바라고 있습니다.

About

python wrapper for HWPFrame.HwpObject using win32com

License:MIT License


Languages

Language:HTML 48.0%Language:Jupyter Notebook 36.9%Language:Python 15.1%Language:CSS 0.0%