본문 바로가기

pyhwpx35

[pyhwpx] 폰트 설정을 위한 set_font 메서드 아래아한글의 글자모양은 제법 다양한 옵션들을 가지고 있습니다. 일반적인 보고서를 작성할 때 사용하는 글자크기(height), 위첨자와 아래첨자, 특별한 경우 글자색을 넣는 정도 외에도 다양한 글자모양 옵션을 아래와 같이 간단한 명령어를 조합하여 적용해볼 수 있습니다. hwp.set_font()의 파라미터 목록 Bold: 진하게 적용(True/False) DiacSymMark: 강조점(0~12) Emboss: 양각(True/False) Engrave: 음각(True/False) FaceName: 서체 이름 FontType: 1(TTF, 기본값) Height: 글자크기(pt, 0.1 ~ 4096) Italic: 이탤릭(True/False) Offset: 글자위치-상하오프셋(-100 ~ 100) OutLine.. 2024. 1. 26.
[pyhwpx] 한/글 자동화 문의 및 요청의 90%는 ㅇㅇ 관련이었어요. 안녕하세요? 일코입니다. 유튜브와 블로그를 운영하면서 받았던 문의 중 90%는 바로 "표"에 관한 내용들이었습니다. 표는 비단 행정뿐만 아니라, 한/글을 통해 작성되는 문서에서 가장 많이 쓰이는 컨트롤이죠. 그런데 기존의 한/글 오토메이션 API를 통해 표를 읽어오거나, 표를 작성하는 메서드는 다소 큰 진입장벽이 있었습니다. 예를 들어 비교적 최근 만든 pyhwpx에서 5행5열의 표를 만들고 "글자처럼 취급"을 적용하는 코드는 아래 세 줄이면 되지만, from pyhwpx import Hwp hwp = Hwp() hwp.create_table(5, 5, treat_as_char=True) 그런데, 기존 오토메이션API를 통해 동일한 표를 직접 생성하려면 무려 아래의 코드를 작성해야 합니다. (혹시 관심 .. 2024. 1. 25.
[pyhwpx] 파이썬 정규식으로 찾아바꾸기 pyhwpx.Hwp().find_replace_all(src, dst, regex=True) regex=True로 설정하면 re.sub와 동일한 방식으로 정규식 문법을 사용할 수 있다. 예를 들어 주민등록번호 패턴인 123456-1234567을 123456-1******로 변경하고자 하면, (여러가지 구현이 있겠지만) src = r"(\d{6})-(\d)\d{6}(?=\D|$)" dst = r"\g-\g******" hwp.find_replace_all(src, dst, regex=True) 라고 코드를 입력하고 실행해보자. 시연화면은 아래와 같다. 정규식 찾아바꾸기 시연화면 바뀌기 전의 원본문서는 아래와 같고 정규식 찾아바꾸기를 적용한 후의 문서는 아래와 같다. 메서드 내부에서는 re.sub를 사용하지.. 2024. 1. 23.
[크롤링 연계2] 보건소 정보로 한/글 파일 만들기 이전 포스팅에 이어, [크롤링 연계] 전국 보건소 정보 가져오기1 아래 코드를 주피터노트북에서 실행하면 질병관리청의 "전국 보건소 정보"를 엑셀로 저장한다.HTML 삽입미리보기할 수 없는 소스다음 포스팅에서는 이 엑셀파일을 한/글의 표로 옮겨보겠다. 미 martinii.fun 엑셀로 취합한 전국 261개 보건소 및 의료원 정보를 한/글 문서의 표로 생성하는 방법을 알아보자. 1. 그대로 집어넣기(세상 간편) 엑셀시트 그대로 삽입하는 방법이다. "보건소.xlsx" 파일이 저장된 위치에서 아래 코드를 실행하면, from pyhwpx import Hwp hwp = Hwp() hwp.table_from_data( "./보건소.xlsx", # 엑셀파일명 index=False, # 1열에 연번 추가안함 cell_f.. 2024. 1. 23.
[크롤링 연계1/2] 전국 보건소 정보 가져오기 feat.질병관리청 아래 코드를 주피터노트북에서 실행하면 질병관리청의 "전국 보건소 정보"를 엑셀로 저장한다. HTML 삽입 미리보기할 수 없는 소스 다음 포스팅에서는 이 엑셀파일을 한/글의 표로 옮겨보겠다. 미리 언급해 두는데, 한/글로 옮기는 코드는 짧다. 2024. 1. 23.
[pyhwpx] 그라데이션 폼 미쳤다! feat. gradation_on_cell pyhwpx.Hwp().gradation_on_cell() 소스코드는... from pyhwpx import Hwp hwp = Hwp() page_info = {'아래쪽': 0, '꼬리말': 0, '제본여백': 0, '제본타입': 0, '머리말': 0, '용지방향': 0, '왼쪽': 0, '용지길이': 108, '용지폭': 192, '오른쪽': 0, '위쪽': 0} hwp.set_pagedef(page_info) hwp.create_table(1, 1, height_type=1, height=107, treat_as_char=True) hwp.MoveDocEnd() hwp.DeleteBack() hwp.get_into_nth_table(0) hwp.insert_picture(r"C:\Users\Admin.. 2024. 1. 18.
[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.