본문 바로가기

분류 전체보기465

[크롤링 연계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.
"박태웅 의장의 AI강의" 독후감 및 근황 요즘 아침에 일어나면 정신을 차릴 때까지 시간이 좀 걸리는데, 오랜만에 힐링도 할 겸 집앞의 도서관에 갔다. 찬 공기도 쐬고, (정도가 아니고 귀가 찢어지는 줄 알았다ㅜ) 걷기도 할 겸 동부도서관에 들렀는데, 의외로 오전 아홉시에도 사람들이 제법 있었다. 신간 코너에 흔히 보이던 IT서적이나 AI관련 서적이 보이지 않았는데, 문득 박태웅 의장님의 "AI강의"라는 책이 생각났다. 전부터 꼭 읽어보고 싶었던 책이다. (하도 호평 일색이어서) 검색PC에서 찾아보니, 의외로 IT가 아닌 다소 엉뚱한(?) 카테고리에 꽂혀 있었다. 크기도 작고, 의외로 얇아서 다 읽는 데 두 시간 남짓 걸렸다. 가볍게 서평을 남겨본다. 책은 크게 두 부분으로 나뉜다. 앞쪽은 AI에 대한 정말 가벼운 교양을 담았다고 해야 하나? 좀.. 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.
[일상] 지난달 번역물 납품한 업체에서 연락을 받았다. 온갖 수식과 전문용어, 수백 페이지 분량의 구조계산서와 탄성파탐사보고서 번역을 지인을 통해 소개받았다. 물불 가릴 처지가 아니었기 때문에 무조건 하겠다고 했다. 시작부터 문제가 좀 있었다. 업체에서는 PDF문서를 보내주었는데, (물론 수정은 가능했지만) 영문이 한글보다 길어서 문서 내 표나 수식이라든지, 레이아웃을 다시 잡을 수밖에 없었다. 편집 가능한 워드나 한/글 문서를 보내주십사 연락을 드리자, 담당자분은 난처한 기색이었다. 기술사사무소에서 원본 제공을 꺼린다고 하셨다. 결국 내가 직접 원 보고서 납품업체에 연락하여 설득한 끝에 편집 가능한 문서를 메일로 받아냈다. 신기한 것은, 너무 수식이 많아서였는지 표지부터 모든 페이지가 엑셀의 워크시트로 만들어져 있었다. 상상해 본 적은 있었지만, 이렇게 엑.. 2024. 1. 16.
[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.
[알고리즘] 2차원 점군을 감싸는 최소면적의 직사각형 그리기(작성중) 본 과정은 Convex Hull과 Rotating Caliper 알고리즘을 학습해 가는 과정입니다. 결론만 얻고 싶은 분은 다른 분의 포스팅을 참고하시길 추천드립니다. 페이스북에서 우연히 읽게 된 질문글이다. 2차원 평면상에 수십여개의 점이 있을 때, 이 점을 모두 포함하는 최소 면적의 직사각형 그리는 방법? 여러가지 해법이 있겠지만, (막연하게나마 Convex Hull과 Rotating Caliper 알고리즘에 대해선 들은 적이 있었다.) 아주 단순한 방식을 들어 풀 수 있을 것 같다는 생각이 들었다. 아래와 같은 점군이 있다고 가정하자. 대략 아래처럼 직사각형이 그려져야 한다. 직사각형이 회전하지 않아도 된다는 가정하에는 그냥 x_min, x_max, y_min, y_max 네 점을 찾아서 직사각형을.. 2024. 1. 14.
[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.