본문 바로가기

hwpx31

스크립트매크로를 파이썬 함수로 고쳐주는 함수 #clipboard_to_pyfunc() 자동화 작업을 하다 보면, 한/글 API에 나와 있지 않은 기능을 스크립트매크로로 녹화해서 파이썬 함수로 변환하려고 하는데, 매크로 자체가 너무 길고 복잡할 때가 있어요. 예를 들어, 아래는 "찾아바꾸기"를 녹화한 스크립트매크로예요. function OnScriptMacro_중국어1성() { HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet); with (HParameterSet.HFindReplace) { MatchCase = 0; AllWordForms = 0; SeveralWords = 0; UseWildCards = 0; WholeWordOnly = 0; AutoSpell = 1; Direction = FindDir("Forward.. 2023. 11. 30.
pyhwpx 간편설치 및 실행 방법 pyhwpx는 고급 업무자동화 기능의 구현보다는, 기본적이고 많이 쓰이지만 다소 사용법이 까다로운 API들을 보다 직관적이고 간단히 실행할 수 있도록 만들어진 모듈입니다. (아직은 개발 초기라서) 직관적이지 않거나, 일명 파이써닉하지 않은 부분이 있습니다.. 조금씩 개선하고 보완하겠습니다. 현재 제 PC에 설치되어 있는 파이썬은 3.11, 아래아한글은 2022 버전입니다. 대부분의 포스팅은 주피터노트북으로 진행하겠습니다. 그럼 설치부터 시작해봅시다. 주피터노트북을 여셨으면 첫 번째 코드 셀에 %pip install pyhwpx 를 입력하고 실행해주세요. 모듈 임포트는 아래와 같은 방식으로 진행합니다. from pyhwpx import Hwp # from pyhwpx import * # (선택) 로우레벨 .. 2023. 11. 28.
파이썬 모듈 pyhwpx를 소개합니다. 안녕하세요? 일코입니다. 업무자동화 강의를 준비하다 문득 이런 생각이 들었습니다. 저는 업무자동화와 코딩을 공부한지 올해로 8년 정도 되어서, 다소 복잡한 코드도 이 즈음 되니까 친숙한 느낌이 들고 이젠 좀 적응이 되는 것 같은데.. 이제 막 코딩에 입문한 분들이 아래아한글 자동화를 경험하면 공식문서도 시원찮고, 문법이나 구조도 복잡하고.. 진입장벽이 너무 높겠더라고요. 호기심에 시작하더라도, 배우다 지쳐 그만두실 것 같았습니다. 저 혼자 쓰는 거라면 이미 익숙해져버린 방법을 계속 쓰면 되는데, 새롭게 배우려는 분들에게는 뭔가 더 직관적인 라이브러리가 있으면 좋겠다 싶은 마음이 들어서 파이썬 모듈을 하나 제작하게 되었습니다. 이름하여 pyhwpx! hwpy나 hwppy로 짓고 싶었는데, hwpy는 이미 .. 2023. 11. 28.
[이벤트핸들러] 문서저장시 첫 번째 표를 엑셀로 자동저장하는 이벤트 hwp automation에서는 꽤 다양한 이벤트핸들러를 제공하고 있는데요. 대략의 목록은 아래와 같습니다. OnQuit OnCreateXHwpWindow OnCloseXHwpWindow OnNewDocument OnDocumentBeforeClose OnDocumentBeforeOpen OnDocumentAfterOpen OnDocumentBeforeSave OnDocumentAfterSave OnDocumentAfterClose OnDocumentChange OnDocumentBeforePrint OnDocumentAfterPrint OnDocumentClickedHyperlink OnDocumentModifiedHyperlink OnBeforeQuit 대략의 사용법을 예시코드로 보여드려보면, """.. 2023. 11. 28.
기본메서드 매핑 완료 2023. 11. 16. 01:48 올해 수능시험을 보는 수많은 젊은이들, 이따 있을 시험을 위해 어마어마한 시간을 준비했을텐데.. 밤잠을 못 이루고 있을 것 같다. 난 졸려 죽겠다ㅜ 방금 드디어 공식문서의 액션리스트 중 현재 실행되는 모든 액션을 snake_case로 매핑 완료했다. 이젠 메서드에만 있고, API문서에는 없는 메서드들이 남았다. (매핑은 완료했고, 문서화가 남았다.) docstring 작성도 평생 이렇게 꼼꼼하게 해 본 적이 없었다. 몸은 힘들지만, 그래. 솔직히 즐겁기도 하다. 장고로 직접 블로그를 만들어 운영했던 2017년이 문득 기억난다. 웹에 대해 아무 것도 모르고 (지금도 잘 모르지만) 무작정 장고가 좋아서 이것저것 따라해보다가 썸머노트와 프리즘js, 여러 가지 라이브러리를 추.. 2023. 11. 16.
hwpx 모듈 개발 중에 버그 하나를 해결하면서.. 2023. 11. 15. 개발일기 hwpx 모듈 개발에 착수한지 일주일쯤 되었는데, 예상하지 못한 몇 가지 문제를 우연히 발견하게 되었다. Hwp라는 클래스를 만들면서, 생성자(__init__) 안에서 win32로 한/글 오토메이션 오브젝트를 생성하고 인스턴스가 실행하는 모든 메서드는 내부의 hwp 오브젝트와 연결되게끔 매핑을 해두었는데, 오토메이션 프로퍼티 중 HeadCtrl과 LastCtrl 두 개가 말썽이었다. Hwp인스턴스.HeadCtrl이 클래스 내부에 생성되어 있는 hwp오브젝트.HeadCtrl과 같지 않다는 것을 발견했다. 새 문서를 Hwp로 열었는데, 표를 몇 개 추가한 후 여전히 인스턴스.LastCtrl이 "단 정의"라는 충격적인 결과를 보는 와중에도, hwp.LastCtrl.Next.U.. 2023. 11. 15.
아래아한글 업무자동화를 위한 파이썬 모듈, pyhwpx 업무자동화 관련한 교육을 몇 회 진행해보면서 강하게 느낀 부분 중 하나는, 일반 사용자 대부분이 "긴 코드"에 대해 불편함을 느낀다는 건데요. 정부부처, 공공기관이나 기관 연수원에서는 장기간의 교육은 잘 만들어지지 않고, 7~8시간 안에 파이썬 기초부터 업무자동화 중급까지 진행해야 하는 상황, 업무자동화에 유용하게 써먹었던 이런저런 함수들을 모아서 간단한 클래스로 구현해놓고, pypi에 업로드해 두려고 합니다. 문서화나 동영상 촬영도 틈틈이 해 보고 싶고요. 우선 사용법은 아래와 같습니다. 1. 터미널에서 pip install pyhwpx로 모듈을 설치한다. 2. 파이썬에서 from pyhwpx import Hwp로 클래스를 임포트한다. 3. hwp = Hwp()로 한/글을 연다. 4. 한/글에서 제공하.. 2023. 11. 7.
[HDMI] hwp를 hwpx로 포맷변환하고 압축 풀기 제목이 거창해 보이지만 사실 굉장히 간단한 프로세스입니다. 1. hwp를 hwpx로 포맷변환(다른 이름으로 저장) 2. hwpx파일 압축해제 이러면 제목이랑 똑같잖아!ㅜ 위 두가지 기능을 각각 구현해보겠습니다. 1. 다른이름으로 저장 한글에서 제공하는 API를 형식별로 크게 나누면 네 가지 정도가 있습니다. ①일반적인 메서드, ②프로퍼티, ③파라미터가 필요한 액션, 그리고 ④파라미터가 필요없는 액션 다른이름으로 저장하기 기능은 함수 형태의 메서드로도 구현되어 있습니다. hwp.SaveAs(파일명, 포맷)입니다. import win32com.client as win32 FILE_PATH = r"C:\Users\smj02\OneDrive\바탕 화면\빈 문서1.hwp" hwp = win32.gencache.E.. 2022. 12. 7.
[HDMI] 빈 문서1.hwpx를 분해해보면 안녕하세요? 일코입니다. HDMI(Hangul Document Manipulation and Information, 이름 참 잘 지었다!) 시리즈 예전에도 이와 관련한 포스팅을 한 번 올린 적은 있었습니다. 한/글 없이 hwpx 파일의 표를 pd.DataFrame으로 추출하는 방법 (tistory.com) 한/글 없이 hwpx 파일의 표를 pd.DataFrame으로 추출하는 방법 안녕하세요? 일상의 코딩, 일코입니다. hwpx 포맷이 만들어진지 벌써 10년도 훌쩍 넘었습니다. 한컴오피스에서는, 데이터 추출이 번거로운 기존의 hwp 포맷 대신 machine-readable한 hwpx 포맷을 사용해 martinii.fun 솔직히 말ㅆ므드리면 그 뒤로 틈틈이 파이썬의 xml 모듈 문서를 읽어보거나 튜토리얼을 .. 2022. 12. 7.