본문 바로가기

한/글71

[QnA] 아래아한글, 마우스로 선택한 그림개체만 속성 바꾸기 아래아한글은 뭐랄까... 신박한 API 기능이 참 많은데 막상 공식문서에서 자세히 다뤄주지 않아서 기능이 꼭꼭 숨겨져 있는 느낌입니다. 무궁무진한 자동화를 구현할 수 있는 수백개의 API를 제공하고 있지만 일종의 "경험치"가 필요하다고 할까요ㅜㅜㅜㅜ 그런 관점에서 저 혼자만 알고 있기 아까운 아래아한글 자동화 노하우를 유튜브로 공유해봅니다. 이번 영상에서는 마우스로 선택한 그림개체들의 크기만 일괄변경하는 방법을 소개합니다. 2024. 3. 13.
[pyhwpx] 한/글 문서의 수식 문자열 초간단 추출하기 아래아한글에는 고유의 수식 언어인 HwpEqn이라는 체계가 있는데 이게 써볼수록 진국이다. 가재가 게편이라 그런지, LaTeX과 유사한 듯 하면서도 HwpEqn이 더 간결하고 우월하다는 느낌도 든다. 하여튼, 어떤 분께서 한/글 개발자 포럼에 아래와 같은 질문을 남겨주셨다. 1. 기존의 오토메이션API를 사용하는 방식 기존 한/글 오토메이션API를 이용하여 문서 내의 모든 수식을 추출해 오는 (내가 아는 한 가장 간결한) 방법은 아래와 같다. """ 각 수식 밑에 수식String 삽입하는 코드 """ import os import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.. 2024. 2. 1.
[pyhwpx] set_current_field_name 의 용도 : 셀에 필드 넣기 개인적인 생각이지만, 아래아한글 자동화의 90%는 필드 활용이 아닐까? 그 외의 반복업무 대부분은 정말 특수한 경우가 아닌 이상 손으로 하는 게, 코드 공부해서 적용하는 것보다 훨씬 빠를 것이다. 그냥 그런 생각이 들었다. 필드 만들고 채우고 꺼내고 하는 기능 외의 대부분의 기능은 부차적이라는 느낌. 급하지 않다면 그냥 틈틈이 연습하다가 때가 되면 써먹을 수 있지만, 대부분의 업무들은 급하니까. 오늘의 본론은 누름틀/필드를 생성할 때 사용할 수 있는 메서드는 두 가지가 있다. 누름틀 필드는 hwp.create_field(field, direction, memo) 셀필드는 hwp.set_current_field_name(field) 왜 이렇게 둘로 나눠야 했을까? 셀 안에도 누름틀을 넣을 수 있기 때문이다.. 2024. 1. 17.
[pyhwpx] gradation_on_cell 활용 일명, 이미지에 어울리는 배경 그라데이션 깔아주기! 이런 배경을 자동으로 생성할 수 있다? 증명사진이나, 투명영역이 있는 png 이미지 배경 그라데이션으로 적용해볼 수 있을 것. 다만, 어울리는 색이라기보다는 colorgram이라는 모듈을 이용해서 n개의 대표색상을 추출해서 한/글과 연동하여 그라데이션을 생성한다. 색상을 추출하는 코드는 아래와 같다. %pip install colorgram.py import colorgram # pip설치할 때 .py가 붙는 모듈은 정말 처음 봤다ㄷㄷㄷ colors = colorgram.extract('./sample.png', 7) # 대표색상 7개 추출 colors_list = [tuple(i.rgb) for i in colors] print(colors_list).. 2024. 1. 15.
[pyhwpx 개발일지] 여러 표를 병합하는 TableMergeTable 기존 API에서 실행방법은 아래와 같다. import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.HAction.Run("TableMergeTable") 현재 표 아래 (다른 내용 없이) 표가 있는 경우 현재 표와 아래의 표 하나를 병합한다. 표가 없는 경우 False를 리턴하며, 오류팝업이 하나 발생한다. 또한 "셀 선택" 상태에서는 작동하지 않는다. 그래서 pyhwpx.Hwp()의 TableMergeTable 메서드는 위 작동방식을 조금 수정했다. 1. 표가 없는 경우 False를 리턴하되, 오류메시지는 뜨지 않게. 처음엔 단순히 SetMessageBoxMode(0x1)로 간단히 팝업을 안 .. 2024. 1. 14.
[pyhwpx] 개발일지, get_into_nth_table 메서드에 대한 고찰? 한/글 문서에서 n번째 표 안에 접근하고 싶은 경우가 있다. 내용을 채우고 싶다든지, 지우고 싶다든지 등의 가공을 해야 하는데, n번째 표에 접근하는 오토메이션 API는 아래와 같다. import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.Open(한글/파일/경로.hwp) n = 10 # 문서 내 10번째 표에 접근하고 싶은 경우 idx = 0 ctrl = hwp.HeadCtrl while ctrl: if ctrl.UserDesc == "표": idx += 1 if idx == n: hwp.SetPosBySet(ctrl.Ge.. 2024. 1. 14.
[pyhwpx] dict나 df를 바로 표로 만들어주는 메서드 : table_from_data 한/글의 표를 자동으로 작성하는 여러 가지 기법이 있다. 가장 많이 사용되는 방법은 아무래도 필드를 사용하는 방법일텐데, 그밖에도 이미 엑셀이나 dict, 데이터프레임 등으로 만들어진 데이터를 한/글에 삽입해야 할 때에는, 그 과정이 상당히 까다롭다. 그래서 table_from_data 메서드를 추가해보았다. table_from_data의 기본적인 사용법은 아래와 같다. 아래와 같이 학급성적 dict가 있다고 가정하면, score = { "ilco": {"kor": 90, "eng": 100, "mat": 80, "soc": 70, "sci": 100}, "martin": {"kor": 88, "eng": 77, "mat": 99, "soc": 100, "sci": 60}, "olive": {"kor":.. 2024. 1. 10.
한/글 구독을 해지했는데, pyhwpx로는 여전히 편집/저장이 가능했네^^; 한글 최신버전에 오류가 좀 있어서, 메인 랩탑에 설치된 한글2022를 잠시 삭제했다. 콘텐츠 녹화하는 동안 잠시 한컴독스 구독을 해지해놓고, 예전에 구매했던 한/글 2018을 다시 설치했다. 몇 달쯤 지났나? 우연히 예전에 사용하던 태블릿PC를 켜봤는데, 여전히 한글2022가 설치되어 있어서 테스트를 해보았다. 직접입력이나 편집, 저장이 전혀 실행되지 않는데 pyhwpx를 통해서 문서작업을 해보니까 다 된다. 이건 버그가 아닐 거야. 기능일 거야. 다만, Run(ActID) 메서드는 바로 실행되지 않고, HAction.GetDefault(ActID) 및 Execute(ActID)로 우회해서 실행하면 여전히 잘 실행된다 아래 영상은, pyhwpx를 통해서 코드로 샘플문서를 만드는 예시. 조만간 패치가 이루.. 2024. 1. 9.
셀에 그라데이션 넣는 메서드 : gradation_on_cell pyhwpx.Hwp().gradation_on_cell은 셀에 다양한 그라데이션 패턴을 간편하게 코드로 삽입할 수 있는 메서드입니다. (아마 회사원들이 자주 사용할 메서드는 아니겠지만.. 문의가 들어온 적은 있었거든요ㅎ) 간단한 사용법은 아래와 같습니다. from pyhwpx import Hwp # 빈 문서를 열고, 1x1의 표를 생성 후 사이즈 조절 hwp = Hwp() hwp.create_table(1, 1) for _ in range(100): hwp.TableResizeDownEx() # 현재 셀에 Red~Green 그라데이션 삽입 hwp.gradation_on_cell(["Red", "Green"]) 1. 첫 번째 파라미터(color_list)에 여러 개 컬러를 넣으면, 넣는 대로 색이 들어갑니.. 2024. 1. 8.