본문 바로가기

반응형

파이썬-아래아한글 자동화 기초

[QnA] 한/글에서 녹화해 둔 매크로를 파이썬에서 변환없이 실행하는 방법은 없을까요? 안녕하세요? (요즘 PySide6 튜토리얼을 작성하면서 다시 다나까체를 사용하게 되었습니다. 저도 헷갈리네요;;; 근데 이방법 저방법 써보고 알게 된 게, 존댓말을 쓴다고 포스팅 생산성이 떨어진다거나 하지는 않는 것 같더라고요.. 하여튼) 이번 포스팅은 제목대로, 한/글에서 녹화한 매크로를 파이썬 코드로 변환하지 않고 바로 실행하는 방법이 없는지 메일로 질문 주신 분께 답변 남겨드리면서, 포스팅도 남겨봅니다. hwp.RunScriptMacro(FunctionName="OnScriptMacro_script5()", uMacroType=0, uScriptType=1) 코드는 위와 같습니다. 구체적인 사용법은 아래 남겨드리지만, 별 영양가 없으므로 안 보시면 좋겠습니다. 아래아한글에서 "Hello World".. 더보기
한/글 메서드별 인자 확인하는 방법(feat. ipython) FileName 과 filename 사이에서 고민하고 있는 "회사원코딩"의 수강생입니다. ^^; 다음 내용을 좀 더 상세히 알 수 있을까요? 어떻게 docstring을 통해 대소문자 점검을 할 수 있는지? 미리 어떤 인자가 파라미터로 사용할 수 있는지? 알수 있는 방법에 대해 조언 부탁드립니다. """ API문서를 한/글2010 이후로 10년간 업데이트하지 않았기 때문이기도 하고, 또다른 이유로 win32의 MakePy문제로 일부 메서드의 파라미터는 한/글 내부 스크립트와 대소문자에 차이가 생긴다. FileName이 파이썬에서는 filename으로 바뀐다든지 하는 식이다. 다행히 이런 경우는 "어느 파라미터가 존재하지 않는다"는 오류메시지가 나오고, docstring을 통해 대소문자 점검을 해 주면 된다.. 더보기
커뮤니티질문 : GetText()에서 표, 글상자에서 텍스트 읽어오기? HwpCtrl.InitScan(0, 2); alert(HwpCtrl.GetText()); HwpCtrl.ReleaseScan(); 위 코드 내용은 한컴설명서에 있는 내용 입니다. 그런데 저렇게 하면 표, 글상자에 있는 내용은 읽어 오기 못 합니다. 특정 문단에 있는 내용을 읽어 싶은데 일반 글자는 읽어 오는데 표, 글상자에 있는 내용은 읽어오지 못 합니다. 고수님들 조언을 부탁 합니다. https://www.hancom.com/board/devcommView.do?board_seq=48&artcl_seq=10844&pageInfo.page=&search_text= www.hancom.com API매뉴얼에 씌어있는 파라미터(대부분 숫자)들은, 신기하게도 조합이 가능하며 (파이썬의 경우) 조합하는 방법은 일.. 더보기
hwp.GetFieldList() # 필드를 다룰 때 꼭 알아야 하는 메서드 응용편에서 튜토리얼을 진행하는 중에 기본 메서드를 자세하게 다루다 보면 의식의 흐름이 툭툭 끊길 수 있어, 이런 식으로 메서드 설명을 기본편에 하나씩 써놓고 참고링크를 달아놓으려고 한다. 1. hwp.GetFieldList() 란? hwp.GetFieldList()는 한/글 컨트롤 오브젝트(HwpCtrl Object)의 메서드 중 하나로 문서에 존재하는 필드(혹은 누름틀)의 목록을 구하는 메서드이다. 개인적으로 한/글 API가 참 친절하다고 느껴지는 부분은 매개변수 파트인데, 필드목록을 구하는 이 간단한 메서드에도 두 개 인자(number, option)에 각각 3개씩의 매개변수가 들어가 있어 누름틀을 상세하게 다룰 수 있다. 2. Number 인자 Number 인자(대소문자 구분)에 들어갈 수 있는 매.. 더보기
한/글 2020 최신 업데이트로도 고쳐지지 않은 API버그 탭을 여러 개 열어놓은 한글창에서 hwp.XHwpDocuments.Item(0).Close(isDirty=False) 명령을 실행하면, 해당아이템(첫 번째 탭)이 닫히는 게 아니라 현재 활성화된 탭이 닫힌다. 이 버그 때문에, 특정 탭을 닫고 싶을 땐 hwp.XHwpDocuments.Item(1).SetActive_XHwpDocument() # 닫고 싶은 탭을 활성화한 후에 hwp.Close(isTab=False) # 닫아야 한다. 불편할 정도는 아니지만 계속 신경쓰인다;; 더보기
문서 안의 컨트롤을 차례대로 선택하는 가장 간편한 방법 먼저, 아래아한글에서 "한글컨트롤", 혹은 "컨트롤"이라 함은, 일반적인 문자열 외에 삽입되는 그림, 표, 벡터이미지, 미주각주나 계산식 등의 "오브젝트"를 뜻하는 용어이며, API매뉴얼 예제에 컨트롤을 선택하는 예제코드가 몇 개 들어있다.정확히 의미를 몰라도 되니, 아래 코드를 가볍게 한 번 읽어보자. 1. Visual Basic으로 문서 중의 각주를 카운트하는 코드Dim ctrlcode As CtrlCode cnt = 0 Set ctrlcode = HwpCtrl.HeadCtrl While Not ctrl Is Nothing If ctrlcode.CtrlID = "fn" Then cnt = cnt + 1 End If Set ctrlcode = ctrlcode.Next Wend MsgBox cnt2. V.. 더보기
[커뮤니티질문] HWP문서의 특정 셀에 색을 넣고 싶은데요. 오랜만에 한글과컴퓨터 개발자 커뮤니티에 들어가 보았다. 개발자 커뮤니티는 아래아한글 정품유저에 한해, 공개된 질의응답 및 노하우 공유 게시판이다. 예전에는 한컴 개발자 분이 직접 들르셔서 개발진 입장에서 상세한 답변을 거의 모든 질문에 남겨주셨는데, 현재는 유저끼리 종종 질답을 남기는 아주 소소한 게시판이 되었다.. 제일 최근에 올라온 질문을 클릭해보니, // c#에서 선택된 셀에 색을 넣고 싶은데요. var pvact = (HWPCONTROLLib.DHwpAction)axHwpCtrl1.CreateAction("BorderFill"); var pvset = (HWPCONTROLLib.DHwpParameterSet)pvact.CreateSet(); pvset.SetItem("Type",1); pvset... 더보기
HWP여백조정 후 이미지 너비/높이를 폭에 맞게 일괄조정하는 방법 HWP포맷을 사용하는 소규모의 출판사가 의외로 많다는 걸 최근들어 알게 되었다. 그도 그럴 것이, 인디자인이나 퍼블리셔 같은 프로그램 없이도 직접 책을 출판하고 SNS로 홍보할 수 있는 시대가 열렸다. 이 부분은 다음에 더 이야기하기로 하고, 수백 페이지 규모의 HWP문서를 만질 때는, 특히 이미지가 많은 문서라면 정말 고생하는 경우가 있는데, 그 중 최고랄 만한 작업은 바로 "용지를 바꾸거나 여백을 변경했을 때"이다. ㄷㄷㄷㄷ 이러면 표 뿐만 아니라 각각의 이미지 전체를 문서 폭 안으로 우겨넣거나 늘려야 하는데, (만약 이미지 너비가 "고정값"이 아니면 더 고생한다. 예를 들어 이미지 너비가 "쪽 100%"로 설정되어 있었는데 용지의 좌우여백을 변경해버리면 폭만 자동으로 줄어들어버려서 그림이 좌우로 쪼.. 더보기
[펌]한글 파일로부터 우리를 구원할 hwp.js 한글 파일로부터 우리를 구원해줄 hwp.js 이한 | Toss 한글 파일을 읽고 렌더링하려는 여러번의 시도가 있었습니다. hwp.js는 크로스 플렛폼 리더, 뷰어를 구현하기 위해 웹 기술을 이용해 한글 파일을 읽고 렌더링하는 프로젝트 입니다. hwp.js를 만들며 배운 브라우저에서 바이너리 파일을 다루는법, 폰트와 절대 단위 프린트 속성등을 공유하고자 합니다. 발표자료 : https://drive.google.com/file/d/1aHm6pOgiNLtiwlmeDRX7UIGSsjgbazyW/view?usp=sharing 한글 파일로부터 우리를 구원해줄 hwp branch.pdf drive.google.com 출처 : www.youtube.com/watch?v=GaAc4J2ST-c 더보기
현재 용지속성을 조회만 하고 싶다면? 안녕하세요 한글문서관련 프로그램을 작성하는 개발자 입니다. 우연히 한컴 개발커뮤니티에서 “현재 용지정보 가져오기 PageSetup” 관련 답변을 달아 놓으신 걸 검색 했습니다. 다름이 아니라 알려 주신대로 하니 특정파일(AAA.hwp)를 열고 하면 ‘0값만 나옵니다. 아래 코드좀 봐주실 수 있으신가요? C#으로 되어 있습니다. AxHwpCtrl ax03 = new AxHwpCtrl(); ax03.CreateControl(); ax03.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample"); ax03.Clear(); ax03.Open(@"AAA.hwp"); HWPCONTROLLib.HwpAction hwpact = (HWPCONTROLLib... 더보기
[한/글자동화 예제] 글자크기를 임의로 바꾸는 간단한 방법 앞 포스팅에서는 글자 속성을 적용하는 여러가지 방법에 대해 알아보았다. 2020/12/14 - [파이썬-아래아한글 자동화 기초] - [한/글자동화 예제]현재 선택영역에 글자속성 적용하기 [한/글자동화 예제]현재 선택영역에 글자속성 적용하기 반말체를 쓰니까, 포스팅 작성속도가 월등히 올라가길래 그렇게 할 예정. 우선, 특정 영역에 찾아가거나 선택하는 방법은 다양하다. "찾기Ctrl-F"를 사용하거나, "탐색GetText" 메서드를 사용하거나, www.martinii.fun 재미있는 것은, 글자 크기도 속성이므로, 동일한 방법으로 현재 글자크기 정보를 얻거나, 크기를 조정할 수도 있다. 가장 아날로그한 방법부터 알아보자. 1. Shift-Alt-E를 사용하는 방법 hwp.Run("CharShapeHeight.. 더보기
[한/글자동화 예제]현재 선택영역에 글자속성 적용하기 반말체를 쓰니까, 포스팅 작성속도가 월등히 올라가길래 그렇게 할 예정. 우선, 특정 영역에 찾아가거나 선택하는 방법은 다양하다. "찾기Ctrl-F"를 사용하거나, "탐색GetText" 메서드를 사용하거나, 아날로그하게 캐럿위치를 "아래로 몇줄 우측으로 세 번째 단어" 식으로 옮길 수도 있으며, 특정 좌표를 찍고 바로 캐럿을 옮길 수도 있다. 필자가 애용하는 방법은 "찾기"와 "GetText"이며, 특정 상황에는 미리 만들어놓은 누름틀(Field)을 사용하는 게 캐럿이동이나 블록선택에 가장 효율적일 수 있다. 하여튼 [특정영역 선택]은 다른 포스팅에서 자세히 다루기로 하고, 특정영역을 선택했다고 치자. 이 영역에 특정 글자속성(이 예제에서는 "이탤릭")을 적용하고 싶다면? 1. 한/글API 중에 이런 명령.. 더보기
현재 위치 글자모양에 "진하게"가 적용되어 있는지 확인하는 방법 자동화 하다 보면 이런 상황을 종종 만납니다. 특정 위치, 혹은 특정 문구를 가진 구간을 선택해서 "진하게"를 적용해야 하는데, 일괄적으로 모든 검색구간에 hwp.Run("CharShapeBold")를 실행해버리면 기존에 진하게 되어 있던 구간들은 모두 "진하게"가 풀려버리잖아? 이런 경우 해결하는 방법입니다. 우선 코드실행 화면은 아래와 같습니다. 조항번호 재정렬 및 조항명 진하게 하는 코드 실행화면 현재 캐럿이 위치해 있는 글자 혹은 선택영역의 속성적용여부를 알아내는 코드는 아래와 같습니다. Act = hwp.CreateAction("CharShape") # "글자모양" 액션 생성 Set = Act.CreateSet() # 해당 세트 생성 Act.GetDefault(Set) # 세트 초기화(Set의 .. 더보기
현재 셀의 사이즈 알아내기/변경하기 """ 여러분 안녕하세요? 오늘은 파이썬으로 한/글 다루기 기초 중에 "액션생성"과 "아이템셋"을 사용하는 예제를 하나 소개해드리려고 합니다. 일전에 현재 열린 문서의 페이지 여백을 알아내거나 조회하는 방법을 알려드렸는데 이번에는 캐럿이 표 안에 위치할 때, 현재 선택한 셀의 가로세로 사이즈를 알아내는 방법입니다. 아래 코드에 자세히 주석을 달아놓겠습니다. """ import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject") hwp.XHwpWindows.Item(0).Visible = True Act = hwp.CreateAction("TablePropertyDialog") # 공식문서-액션테이블에서 검색(.. 더보기
2019년 파이콘 참석영상(코알못 직장인) 안녕하세요? 회사원코딩의 Martinii입니다. 아래 영상은 작년 파이콘코리아 세션에 큰맘먹고 15분 발표신청을 해봤는데 운좋게 단상에 서게 되었고, 주최측에서 녹화해주신 영상입니다. 워낙 바쁘고 스트레스를 많이 받던 시기이기도 했고, 제대로 준비를 해서 더 멋진 모습을 보여드리고 싶었는데, 머릿속에서 그렸던 대로 발표가 이뤄지지는 않아 섭섭함이 많이 남은 발표지만, 여러 번 보니 오글거림이 줄어들기는 하더군요ㅜ (이번 2020에도 염치없이 신청해볼까 했다가, 별다른 진전이 없어서 포기하게 되었습니다. 비슷한 주제라면 더 잘 할 수 있을 것 같은데...) 그리고 아래 영상은 2019파이콘 준비를 위해 실시했던 격월세미나(?) 에 또 한/글 자동화 관련해서 무작정 발표신청하고 찾아가서 10분 발표를 했는데.. 더보기
5. 특정단어 포함한 문장 전체의 서식 바꾸기, 가능할까? 안녕하세요? 회사원코딩의 Martinii입니다. 이번 포스팅에서는 아래아한글의 "찾기/찾아바꾸기"를 파이썬 코드로 재현해보려고 합니다. 나아가 특정 단어를 포함한 문장 전체를 선택해서 서식을 바꾸는 작업까지 코딩해볼게요. 한/글에서 기본적으로 찾기는 Ctrl-F, 찾아바꾸기는 Ctrl-H죠. 예문은 아래 사이트에서 5문단 정도 따왔습니다. 한글 Lorem Ipsum (간세네) 로렘 입숨(lorem ipsum; 줄여서 립숨, lipsum)은 출판이나 그래픽 디자인 분야에서 폰트, 타이포그래피, 레이아웃 같은 그래픽 요소나 시각적 연출을 보여줄 때 사용하는 표준 채우기 텍스트로, 최종 � guny.kr 이 문서에서 가장 먼저 출현하는 "대통령"을 찾는다든지, 문서 내 모든 "대통령"이라는 텍스트에 [진하게 .. 더보기
4. 문서여백을 파이썬으로 바꿀 수 있을까? 안녕하세요? 한/글 자동화 응용편에 보시면, 한/글에서 녹화한 스크립트 매크로와 API매뉴얼의 기본적인 액션 생성 방법 두 가지 문법을 보여드렸습니다. [파이썬-아래아한글] API매뉴얼과 스크립트매크로가 다르다? 안녕하세요? 회사원코딩의 신명진입니다. 이번 포스팅은, 스크립트매크로와 API매뉴얼 코드의 차이에 대해서 한 번 보여드리려고 합니다. 어떤 간단한 예제를 들어볼까 하다가, 쪽번호 감추기를 www.martinii.fun 문법에는 다소 차이가 있는 느낌이지만, 기본적인 실행방법은 동일했어요. 1. 액션을 생성한다. 2. 파라미터셋을 만든다. 필요한 경우 초기화하거나 설정값을 변경한다. 3. 액션을 실행한다. 이번 포스팅에서는 같은 순서로 페이지 여백을 조정하는 방법을 같이 따라해보겠습니다. 우선 스.. 더보기
3. 자동화 하실 거면 꼭 정품등록하시고 개발자커뮤니티 들어가보세요! 안녕하세요? 회사원코딩의 Martinii입니다. 유튜브에서 채널도 만들어보고, 블로그로도 이런저런 자동화 관련 튜토리얼을 보여드리고 있는데요. 영상에서도 종종 보여드렸지만, 이번 포스팅에서는 한컴오피스 공식홈페이지의 개발자커뮤니티를 소개하려고 합니다. 아래는 hancom.com의 메인화면이에요. 여기 고객지원 개발자센터에 보시면 개발자 커뮤니티가 있어요. 여기로 말할 것 같으면... 2016년부터 무려 한컴 개발진이 직접 강림하셔가지고, 본인이 아는 자동화 코딩 꿀팁과 문제해결법을 손수 작성해주셨던 커뮤니티입니다. 예를 들면... 근데 2020년 현재까지도 커뮤니티라기보단 Q&A 게시판 느낌입니다. 그게 좀 아쉽긴 합니다. (개인적으로는, 정품등록을 하지 않고도 사용할 수 있다면 커뮤니티가 훨씬 활성화되.. 더보기
2. 파이썬으로 아래아한글을 열고, 글자를 입력해봅시다. 지난 포스팅에서 여러분의 업무망 컴퓨터에다 아나콘다 배포판과 파이참 커뮤니티 에디션을 설치했습니다. 이번에는 본격적인 자동화 튜토리얼에 앞서 파이썬으로 아래아한글을 여는 예제부터 진행해보겠습니다. 윈도우키를 누르면, "최근에 추가한 앱"에 Anaconda Prompt, Anaconda Powershell, Jupyter Notebook, Spyder 및 Pycharm Community Edition 등 다양한 프로그램들이 추가되어 있는 것을 보실 수 있습니다. 전부 실행해 보고 싶지만, 우선은 "Anaconda Prompt (anaconda3)" 아이콘을 실행해주시기 바랍니다. 일반적인 커맨드프롬프트와는 다르게 좌측에 (base)라는 문구가 들어가 있습니다. 나중에 다루게 되겠지만, 아나콘다에서 제공하는.. 더보기
1. 파이썬-아래아한글 자동화를 위해 먼저 할 일 두 가지! 안녕하세요? 이 메뉴에 업로드되는 포스팅들은 주로 아래아한글을 다루는, 그리고 파이썬은 깊이 알지 못하는 회사원을 대상으로 작성합니다. 아래아한글 기능설명에 대해서는 가급적 다루지 않습니다. (알고 계시는 것으로 간주하겠습니다.) 대신 파이썬 문법에 대해서는 틈틈이 주석이나 별도의 상세한 설명을 첨부할 예정입니다. 유튜브 채널이나 이 블로그의 응용편 예제들이 너무 어렵다고 느껴지는 분들은 이 곳, 아래아한글 자동화 기초에서부터 차근차근 따라해보시면 금방 자동화에 익숙해지실 겁니다. 이 튜토리얼들을 실행하기 위해 여러분이 먼저 해 주셔야 하는 작업이 두 가지 있습니다. 1. 여러분의 업무용 컴퓨터에 아나콘다를 설치합니다. 아나콘다는 파이썬+유용한 패키지 모음집이라고 생각하시면 됩니다. 무려 400메가가 넘.. 더보기

반응형