본문 바로가기

RPA22

[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.
[인프런 QnA] 용지설정 관련 질문입니다! 감사히 잘 활용하는 중에 질문이 있어서 글을 남깁니다 제가 용지 설정(F7)의 좌우 여백을 15mm로 설정하고자 문서를 찾기 시작했습니다. 제가 찾은 것은 다음과 같습니다. ActionTable : PageSetup - 편집용지 ParameterSet ID = SecDef ParameterSet Table 의 SecDef를 확인하니 Item이 PageDef로 SubType을 지정하도록 합니다. 따라서 PageDef를 찾은 결과 LeftMargin과 RightMargin을 찾을 수 있었습니다. SecDef를 넣어도 PageDef를 넣어도 에러가 발생합니다. 혹시 SecDef의 SubType를 PageDef로 지정하는 방법이 따로 존재하는 것인지 질문드립니다. 여기서 제가 사용한 코드는 다음과 같습니다. a.. 2024. 1. 5.
쉬운 용지설정 : 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.
다른 hwp파일을 삽입하는 insert_file 메서드 사용법 현재 열려 있는 문서 안에 특정 문서의 내용을 삽입하는 메서드에는 hwp.insert와 hwp.insert_file 등이 있다. 1. hwp.insert는 순수하게 문자열 정보만 가져오고 싶을 때(hwp.open처럼) 2. hwp.insert_file은 스타일, 쪽 서식, 글자 및 문단모양까지 함께 가져오고 싶을 때 사용한다. 한/글 버전에 따라 작동방식이 다를 수 있다. 현재 시연 버전은 한글2018 최신 업데이트 버전이다. 바탕화면에 아래와 같은 bucket_list.hwp 라는 문서가 있을 때 이 문서를 각각의 메서드로 삽입해보자. 1. hwp.insert로 삽입해보면 이렇게 서식이 깨지는 등의 문제가 생길 수 있다. 2. hwp.insert_file로 삽입하면 페이지서식과 스타일, 글자 및 문단모.. 2024. 1. 3.
hwp.open으로 url주소 열기 pyhwpx.Hwp() 클래스의 open 메서드는 웹상의 hwp 문서 다운로드 링크를 직접 입력할 수 있습니다. (url 주소 입력시 해당 파일을 현재경로에 다운로드한 후 열게 됩니다.) 만약 다운로드URL 문자열 안에 "ㅇㅇㅇㅇ.hwp"라는 파일명이 포함되어 있지 않은 경우에는 "./temp.hwp"로 임시저장하게 됩니다. 2024. 1. 1.
pyhwpx로 필드 채우는 방법 기초(중요) 아래아한글 문서에 필드가 삽입되어 있는 경우 각 필드에 값을 채워넣는 몇 가지 방법을 소개한다. 1. 문서 내에 동일한 이름의 필드가 여러 개 존재하는 경우 ①단순히 hwp.put_field_text(field=필드명, text=값)으로 입력하면, 해당하는 모든 필드에 동일한 값이 일괄 삽입된다. ②만약 "이름"이라는 필드마다 다른 이름을 입력하고 싶다면, 두 번째(text) 파라미터에 리스트나 튜플을 넣으면 된다. ③ 동일명의 필드 중 n번째 필드에만 특정 문자열을 입력하는 경우에는 idx 파라미터를 추가하면 된다. idx 파라미터를 사용하지 않고, 직접 field{{i}} 방식을 사용할 수도 있다. (f스트링을 사용하는 경우, f스트링이 중괄호 세 겹을 소모하므로 총 다섯겹의 중괄호로 감싸야 함) 여.. 2023. 12. 26.
[예제] 특정 단어들에다 메모교정표 삽입하기 pyhwpx는 win32 기반의 한/글 오토메이션 API 명령어의 복잡성을 보완하고자 업무자동화에 사용되는 여러 가지 상위기능들을 메서드로 제공합니다. 아래와 같은 문서가 있을 때, 아래와 같은 교정단어 사전을 통해 교정하고자 하는 단어에 메모고침표를 달아주는 것이 목표입니다. # 교정대상 단어 예시자료(dict) word_dict = { "가감": "→더하고 빼기, 더하거나 빼기", "가건물": "→임시 건물", "가결의": "→임시 결의", "가공": "→영향을 미치다", } 결과물이 대략 다음과 같을 때, 기존 win32com과 한/글 오토메이션 API를 사용한 전통적인(?) 코드는 대략 아래와 같습니다. import os import win32com.client as win32 from tkint.. 2023. 12. 6.