본문 바로가기

아래아한글 자동화255

[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.
아래아한글 액션아이디와 대응 파라미터셋 목록 Action ID ParameterSet ID Description AllReplace FindReplace 모두 바꾸기 AQcommandMerge UserQCommandFile 입력 자동 명령 파일 저장/로드 (글메뉴의 [도구-빠른 교정-빠른 교정내용]에서 [입력 자동 명령 사용자 사전] 대화상자) ParameterSet을 직접 조작하여 사용함. Average Sum 블록 평균 BackwardFind FindReplace 뒤로 찾기 Bookmark BookMark 책갈피 CellBorder CellBorderFill 셀 테두리 CellBorderFill CellBorderFill 셀 테두리 CellFill CellBorderFill 셀 배경 CellZoneBorder CellBorderFill 셀 테.. 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.
[인프런 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.