본문 바로가기

HWP48

[pyhwpx] 페이지 하나에 이미지 하나씩 수백장 삽입해야 할 때... move_to_field와 insert_picture를 활용한 파이썬-아래아한글 자동화 예시 매일 반복적으로 하는 업무는 아니지만 가끔씩 시간을 많이 뺏는 업무 중에"페이지 꽉 채우는 표 하나에 사진 하나씩 수백장 삽입하기" 같은 업무가 있습니다.굉장히 단순한 업무인데 양이 많아서 몇 시간씩 걸리기도 하고, 특히 눈도 손목도 아프고 피곤하고요ㅜ​​이런 경우에 파이썬코드 두세 줄 정도 외워서 활용하기 딱 좋은 예제입니다. 어떤 분들에게는 도움이 되었길 바랍니다.행복한 하루 되세요^^ 2024. 11. 21.
[QnA] 아래아한글, 마우스로 선택한 그림개체만 속성 바꾸기 아래아한글은 뭐랄까... 신박한 API 기능이 참 많은데 막상 공식문서에서 자세히 다뤄주지 않아서 기능이 꼭꼭 숨겨져 있는 느낌입니다. 무궁무진한 자동화를 구현할 수 있는 수백개의 API를 제공하고 있지만 일종의 "경험치"가 필요하다고 할까요ㅜㅜㅜㅜ 그런 관점에서 저 혼자만 알고 있기 아까운 아래아한글 자동화 노하우를 유튜브로 공유해봅니다. 이번 영상에서는 마우스로 선택한 그림개체들의 크기만 일괄변경하는 방법을 소개합니다. 2024. 3. 13.
[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] 폰트 설정을 위한 set_font 메서드 아래아한글의 글자모양은 제법 다양한 옵션들을 가지고 있습니다. 일반적인 보고서를 작성할 때 사용하는 글자크기(height), 위첨자와 아래첨자, 특별한 경우 글자색을 넣는 정도 외에도 다양한 글자모양 옵션을 아래와 같이 간단한 명령어를 조합하여 적용해볼 수 있습니다. hwp.set_font()의 파라미터 목록 Bold: 진하게 적용(True/False) DiacSymMark: 강조점(0~12) Emboss: 양각(True/False) Engrave: 음각(True/False) FaceName: 서체 이름 FontType: 1(TTF, 기본값) Height: 글자크기(pt, 0.1 ~ 4096) Italic: 이탤릭(True/False) Offset: 글자위치-상하오프셋(-100 ~ 100) OutLine.. 2024. 1. 26.
한/글 구독을 해지했는데, pyhwpx로는 여전히 편집/저장이 가능했네^^; 한글 최신버전에 오류가 좀 있어서, 메인 랩탑에 설치된 한글2022를 잠시 삭제했다. 콘텐츠 녹화하는 동안 잠시 한컴독스 구독을 해지해놓고, 예전에 구매했던 한/글 2018을 다시 설치했다. 몇 달쯤 지났나? 우연히 예전에 사용하던 태블릿PC를 켜봤는데, 여전히 한글2022가 설치되어 있어서 테스트를 해보았다. 직접입력이나 편집, 저장이 전혀 실행되지 않는데 pyhwpx를 통해서 문서작업을 해보니까 다 된다. 이건 버그가 아닐 거야. 기능일 거야. 다만, Run(ActID) 메서드는 바로 실행되지 않고, HAction.GetDefault(ActID) 및 Execute(ActID)로 우회해서 실행하면 여전히 잘 실행된다 아래 영상은, pyhwpx를 통해서 코드로 샘플문서를 만드는 예시. 조만간 패치가 이루.. 2024. 1. 9.
쉬운 용지설정 : 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.
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.
문서의 표를 csv나 판다스 데이터프레임으로 추출하는 메서드 # table_to_csv # table_to_df 한/글의 표를 csv나 판다스 데이터프레임(df)로 저장할 때 곤혹스러운 경험을 하신 적이 있을 거예요. 왜냐면 한/글의 표를 클립보드에 복사하고 붙여넣기해보면 행 구분 없이 전부 줄바꿈(\r\n) 기호로만 구분된 문자열이 되거든요. '그럼 표의 모양(3행5열)을 기억해 뒀다가 적당히 잘라서 저장하면 되지 않나?' 이렇게 생각하실 수도 있지만, 아래와 같이 셀 안에 줄바꿈이 있는 경우는 더욱 난처해지죠. 그래서 pyhwpx에서는 table_to_csv, table_to_df 메서드를 제공하고 있습니다. 한 번 사용해볼까요?ㅎ 캐럿은 아무데나 두고 아래와 같이 실행하면 문서 첫 번째 표를 csv로 변환해요. (n번째 표는 idx=n이라고 파라미터를 추가하시면 돼요.) hwpx.table_to_df( fil.. 2023. 12. 1.