본문 바로가기

분류 전체보기465

[QnA] 아래아한글, 마우스로 선택한 그림개체만 속성 바꾸기 아래아한글은 뭐랄까... 신박한 API 기능이 참 많은데 막상 공식문서에서 자세히 다뤄주지 않아서 기능이 꼭꼭 숨겨져 있는 느낌입니다. 무궁무진한 자동화를 구현할 수 있는 수백개의 API를 제공하고 있지만 일종의 "경험치"가 필요하다고 할까요ㅜㅜㅜㅜ 그런 관점에서 저 혼자만 알고 있기 아까운 아래아한글 자동화 노하우를 유튜브로 공유해봅니다. 이번 영상에서는 마우스로 선택한 그림개체들의 크기만 일괄변경하는 방법을 소개합니다. 2024. 3. 13.
[세상 쉬운 파이썬중급] nonlocal? closure? yield? generator? 파이썬 입문 레벨을 즐겁게 공부하신 분들이 상당히 버거워하시는 몇 가지 키워드가 있더라고요. 대표적으로 yield, nonlocal, closure나, 코루틴, 제너레이터, 스레드 같은.. 중요하기도 하고, 이해하고 나면 의외로 간단한데 처음엔 겁이 덜컥 나는 키워드들 있잖아요ㅎㅎ 그래서, 최대한 간단한 예제를 가지고 생소한 키워드나 문법을 차근차근 뿌시는 영상 시리즈를 기획해보았습니다. 20분 내외 x 총 10회 정도로 구상중입니다. 문법을 정리하는 시간도 되고, 요새 심란한 마음이 다소나마 차분해지는 것 같아 개인적으로는 제작이 즐겁습니다. (업무자동화 콘텐츠 소재고갈 때문이기도 하고;;;) 하여튼 첫 영상은 클로저와 제너레이터에 대해 다뤄보았습니다. 파이썬 입문에서 실력이 멈췄다 싶은 분들께 추천드.. 2024. 3. 13.
[pyhwpx] pyhwpx 관련 포스팅은 네이버 블로그를 참고해주세요. 전에 공지드린 바와 같이, pyhwpx 관련 포스팅은 네이버 블로그를 사용해볼 예정입니다. 네이버 블로그에 움짤 삽입이 훨씬 자유로운 느낌입니다. 티스토리는 10메가 이상의 움짤 삽입이 불가능하고, 움짤을 크게 보기 위해서 새 창에서 열어야 하는 등 불편함이 있는데 네이버 블로그는 움짤 용량도 적절히 줄여주는 것 같고, 무엇보다 클릭했을 때 바로 전체화면으로 보여주는 점이 참 좋네요. https://blog.naver.com/pythonrpa/223351325199 [pyhwpx] 수식의 크기, 색깔 등을 코드로 일괄수정하기 한글오토메이션API의 한 축을 담당하는 ctrl은 사용법이 다소 직관적이지 않은 부분이 있어 익숙해지는 ... blog.naver.com 2024. 2. 12.
본 카테고리 포스팅 대부분은 win32로 자동화하는 포스팅입니다. [pyhwpx]가 붙어있지 않은 대부분의 파이썬-아래아한글 자동화 포스팅은 win32com.client를 이용한 한글오토메이션API 예제와 설명들입니다. pyhwpx 사용법이 궁금하신 분들은 본 블로그의 `pyhwpx 사용법` 카테고리를 참고하시거나, 포스팅 제목에 `[pyhwpx]`가 붙은 글을 참고하시면 됩니다. 또한 pyhwpx에 대한 글은 https://blog.naver.com/pythonrpa 에 업데이트 예정입니다. 블로그를 이사하는 건 아닙니다. https://martinii.fun의 도메인 유지비용이 예상보다 너무 높고, 결제를 미루고 있는 중에 https://employeecoding.tistory.com의 포털 노출이 생각보다 너무 낮다는 점 때문에 pyhwpx 관련 포스팅은 네이버 .. 2024. 2. 12.
[pyhwpx] hwp.put_field_text에 입력 가능한 6가지 자료구조☆☆☆☆☆ 파이썬의 창시자 Guido Van Rossum 선생님은 말씀하셨지. Readability comes first, performance next. 가독성보다는 성능에 치중해서, 비교적 복잡한 메서드를 사용하는 프로그래머들에게 "경미한 성능향상보다는 가독성을 중시해서 코딩하라"는 맥락으로 연산자 오버로딩의 장점에 대해 다루면서 하신 말씀이긴 했지만, pyhwpx의 문법도 가급적 사용자 지향적으로, 성능보다는 가독성이나 편의 위주로 코드를 짜보고 있다. 약간 과하다 싶을만큼 추상화를 하기도 했고, "로우코드"스럽게 만들고 싶었다. (그렇다고 성능을 엄청 버린 건 아니고.. 내부적으로는 최대한 빠른 방법을 썼다.) 그 중 최고로 유용하게 쓰일 메서드를 고르라면 단연 put_field_text를 꼽고 싶은데(그 .. 2024. 2. 10.
[pyhwpx] 삽입할 필드가 너무 많을 때 : hwp.set_field_by_bracket() 아래아한글 문서를 자동화할 때 가장 많이 사용하는 기법은 역시 "필드삽입"이다. 누름틀이나 셀필드를 미리 삽입해 두고 엑셀문서나 데이터프레임에서 필드를 일괄삽입하는 방식으로 hwp 문서를 자동화할 수 있는데, 문제는 필드가 너무 많을 때에는 필드 삽입작업도 너무 귀찮다는 것. 예를 들어 아래의 문서를 자동화하려면 저 빈 칸에 전부 필드를 삽입해야 한다고 생각하면 자동화를 위한 준비작업조차 빡센 상황이 된다... 실제로는 이런 경우에는 필드삽입보다 한 행만 남겨놓고, 나머지 행을 삭제한 후 소스(엑셀파일)에 맞춰 동적으로 행을 추가해 가는 방식이 더 적절할 것 같기는 하다. 나중에 다뤄볼 것. 이런 경우에는 set_field_by_bracket을 사용해보자. 필드가 매겨질 곳에 대괄호 두겹으로 필드명을 써.. 2024. 2. 10.
[pyhwpx] 메모 또는 메모고침표 일괄삽입하는 예제 국립국어원에서는 일본어투 생활용어와 권장표현을 정리하여 두 차례 공개한 바 있다. (아이러니하게도 최근 공개한 자료의 용어 수가 50개로 예년의 자료에 비해 훨씬 적다.) 위 문서를 다운받은 후 아래 코드를 실행하면 교정표 데이터프레임이 만들어진다. import pandas as pd from pyhwpx import Hwp hwp = Hwp() hwp.open("이제부터는 분빠이하지 말고 각자내기합시다_보도자료.hwp") df = hwp.table_to_df(-1) # 1열 제거 df.drop("", axis=1, inplace=True) # 동일명의 칼럼끼리 병합하기 df.columns = [0, 1, 2, 3] df1 = df[[0, 1]] df2 = df[[2, 3]] df1.columns = [.. 2024. 2. 10.
[pyhwpx] 스크립트매크로를 파이썬 함수로 바꿔주는 hwp.clipboard_to_pyfunc hwp.clipboard_to_pyfunc 를 설명하기 전에 먼저, 기존에 정의된 스크립트매크로를 한/글에서 직접 실행하는 명령어도 있기는 하다. 바로 hwp.run_script_macro라는 메서드인데, 사용법은 간단하다. hwp.run_script_macro("OnScriptMacro_중국어1성()") 방식으로 사용하면 된다. 대신 유의할 점은, 스크립트매크로 목록의 이름인 "중국어1성"이 아니라 소스코드의 함수명인 "OnScriptMacro_중국어1성()"을 입력해야 한다는 것이다. (괄호 포함) 그런데, 매크로는 수시로 녹화하는 관계로, 지워지거나 변경되는 경우가 잦다. 그래서 특정 매크로를 파이썬 코드로 만들어 두고 싶을 때가 있는데, 이 과정이 어려운 것은 아니지만, 번거롭고 귀찮다. 그래서 .. 2024. 2. 10.
[pyhwpx] 페이지별로 분할 저장하기 100장의 문서가 있다고 할 때 페이지별로 1.hwp, 2.hwp, ..., 100.hwp로 저장하는 예제를 진행해보자. 위 문서를 다운받은 후 해당 폴더에서 쥬피터노트북을 실행한다. (본 포스팅에서는 '바탕화면'이라고 가정) 아래 명령어를 실행한다. import os from pyhwpx import Hwp # 바탕화면으로 이동 os.chdir( os.path.join( os.environ["USERPROFILE"], "desktop") ) # 분할파일 저장할 폴더 생성 os.mkdir("result") # 원본문서 열기 hwp = Hwp() hwp.open("표창장100ea.hwp") # 한페이지씩 잘라서 저장하기 hwp.add_doc() # 새 문서 열림 hwp.switch_to(0) # 원본 문서.. 2024. 2. 10.