본문 바로가기

아래아한글 자동화/pyhwpx 사용법38

[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 개발일지] 한/글 액션별 파라미터셋의 모든 아이템과 설명 입문자도 쉽게 사용할 수 있게 문서화를 진행하는 차원에서 아래와 같이 정리해보았다. 비록 한글2010 근처의 액션아이디 리스트지만 2024까지 내려오면서 문서편집의 본질과 핵심액션은 크게 바뀌지 않았다. 그러고 보면 한/글이 참 대단한 프로그램었다는 생각이 든다. 액션 및 대응 파라미터셋, 그리고 아이템 목록. 오토메이션 파라미터가 궁금할 때 참고하기 바람. 헉, 그런데 표가 너무 길어서 그런가 붙여넣기가 실패한다ㅜ 표 하나에 때려넣지 말고 다시 액션별로 쪼개서 표를 만들어야겠다.. 혹시 블로그 포스팅 분량제한에 걸릴 수도 있겠구나ㅜ 하여튼 공유방법을 생각해보자. 2024. 1. 12.
[pyhwpx 개발일지] 모든 파라미터를 API대로 만들 필요가 있을까? feat. insert_picture 한/글에서 이미지를 삽입할 때 사용하는 InsertPicture 메서드에는 sizeoption이라는 파라미터가 들어있다. 이 파라미터는 다소 직관적이지 않은 부분이 있는데, sizeoption 파라미터의 기본 동작은 아래와 같다. 0: 이미지 원래의 크기로 삽입한다. width와 height를 지정할 필요 없다.(realSize) 1: width와 height에 지정한 크기로 그림을 삽입한다.(specificSize) 2: 현재 캐럿이 표의 셀 안에 있을 경우, 셀의 크기에 맞게 자동 조절하여 삽입한다. (종횡비 유지안함)(cellSize) 캐럿이 셀 안에 있지 않으면 이미지의 원래 크기대로 삽입된다. 3: 현재 캐럿이 표의 셀 안에 있을 경우, 셀의 크기에 맞추어 원본 이미지의 가로 세로의 비율이 동일.. 2024. 1. 11.
[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.
쉬운 용지설정 : get_pagedef_as_dict와 set_pagedef 기존 오토메이션 API에서 용지설정은 복잡하진 않지만 꽤 코드가 길었다. 굳이 예전 코드를 보여드릴 필요는 없을 것. 그래서 pyhwpx에 get_pagedef_as_dict 와 set_pagedef 메서드를 추가하였는데, 사용법은 아래와 같다. ① hwp.get_pagedef_as_dict() 현재 페이지의 용지설정값을 사전 형태로 가져온다. 조회 뿐만 아니라, 이 데이터와 set_pagedef 메서드를 통해 새 페이지에 용지설정을 적용하는 것도 가능하다. ② hwp.set_pagedef(page_info) 위에서 얻은 페이지정보의 값 일부 또는 전부를 변경한 후, set_pagedef 안에 넣고 실행하면, 변경된 용지설정이 적용된다. 단, set_pagedef의 기본값은 현재 페이지에만 적용되며, 문.. 2024. 1. 4.