이번 포스팅에서는 모든 표들의 캡션 텍스트 또는 서식을 파이썬으로 일괄 수정하는 방법을 알려드리겠습니다.
예제는 다소 간단하게,
아래처럼 표 하단 좌측으로 정렬되어 있는 캡션을

아래처럼 상단 중앙으로 옮기는 코드입니다.

hwp문서 안에서 표 캡션을 수정하려면 다소 번거롭습니다.
대부분은 직접 마우스로 클릭하실 거고, (저도 그렇습니다)
실수로 표 옆이나 표 안에서 Ctrl-N-C 같은 단축키를 누르면
캡션이 없어져버리기 일쑤입니다ㅜ
특히 보고서나 논문(논문을 hwp로 작성하시는 분들이 많지는 않겠지만..) 작성시에는
분량이 큰 경우가 많은데,
표의 갯수가 어마어마할 때도 있지요.
샘플 문서를 하나 만듭시다.
빈 문서에다 표를 임의로 세 개만 만들겠습니다. (단축키는 Ctrl - New-Table)
여러분은 상상력을 발휘해서 보고서 안에 표가 백 개쯤 있다고 가정해주시면 됩니다.

각각의 표에 캡션을 임의로 달겠습니다.
(단축키는 표 근처나 안에서 Ctrl - New-Caption)

이렇게 문서를 완성한 후 바탕화면에 "캡션.hwpx"로 저장하고 문서를 닫습니다.
hwp로 저장하셔도 무방합니다. 저는 오늘 한/글2022를 구매해서 설치한 기념으로 오늘부터 hwpx를 사용할 예정입니다.
이제 파이참을 열어서 차근차근 문제해결을 해 봅시다.
1. 파이썬으로 한/글을 열고 캡션.hwpx 파일을 불러옵니다.

2. 첫 번째 표 안이나 근처로 커서를 옮겨놓습니다.
(이 수작업 부분은 조금 나중에 코드로 변환할 예정입니다.)

3. 아래 코드를 실행하면 하단에 있던 캡션이 상단으로 이동합니다.

움짤을 보시면 SideType 안에 들어가는 문자열 인자값에 따라 캡션이 좌우상하로 옮겨집니다.
hwp.SideType("Left") 는 단순히 0을 리턴하므로, 위 코드에 0을 직접 입력해도 무방합니다.
그리고 "Right", "Top", "Bottom" 을 입력했을 때의 정수값은 각각 1, 2, 3입니다.
다섯 줄 밖에 아닌 코드지만,
처음 액션 관련 코드를 보시는 분들은 좀 어렵게 느껴지실 겁니다.
저런 코드는 대부분 외워서 만드는 게 아니라, 스크립트매크로녹화 에서 따오는 겁니다.
한/글 스크립트매크로로 "캡션 옮기기" 과정을 녹화한 후에,
우리가 원하는 액션과 상관없는 라인을 모두 지우고 나서
파이썬 문법에 맞게 조금만 가공한 결과물입니다.
포스팅 마지막에 부록으로 위 코드를 녹화하고 가공하는 과정을 다시 보여드리겠습니다.
4. 좌측정렬된 캡션을 중앙으로 옮기겠습니다.
캡션의 정렬상태를 바꾸려면 캡션에 직접 들어가야 합니다.
그런데 캡션에 접근하는 메서드가 따로 존재하지 않습니다.
대신 두 가지 대안이 있는데,
1. (모든 표의 캡션에 표번호가 있는 경우) 캡션 안의 표번호 컨트롤을 이용해 접근하는 방법이고
2. (표번호를 쓰지 않는 경우) "캡션 스타일 찾기"를 이용해 접근하는 방법입니다.
이 포스팅에서는 첫 번째 방법을 사용하겠습니다.
위에서 수작업으로 직접 표 안에 들어갔는데,
표번호 컨트롤로 이동하는 방법을 사용하면 단번에 캡션에 접근할 수 있게 됩니다.
코드는 아래와 같습니다.
위 코드가 가장 대표적인 컨트롤 찾아가기 방법입니다.
다섯 번째 줄이 "가운데정렬" 액션을 실행합니다.
실행해보면

짜잔! 의도한 대로 잘 변경되었습니다.
그럼 위에서 보여드린 코드들을 정리해서 각각 함수로 묶어보겠습니다.
코드가 제법 깔끔해졌네요.
이번 포스팅은 여기서 마칩니다.
부록 : 스크립트 매크로 파이썬으로 옮기기
부록으로 스크립트 매크로 녹화 코드를 파이썬으로 옮기는 과정을 천천히 보여드리겠습니다.
보여드릴 과정은 캡션을 상단으로 옮기기입니다.
1. 스크립트매크로를 녹화합니다. (Shift-Alt-H)

2. 녹화한 코드를 열어서 파이참 에디터에 붙여넣습니다.

녹화한 코드는 아래와 같습니다.
3. with문을 삭제합니다.
with문은 파이썬에서 쓰이지 않는 문법입니다.
(with 뒤 괄호 안에 있는 코드가 대괄호 안의 모든 라인 앞에 붙습니다.)
코드 중 아래 부분을
아래처럼 바꿔주면 됩니다. (불필요한 들여쓰기도 모두 삭제했습니다.)
4. 나머지 서식 정리
들여쓰기 없애고, 세미콜론 지우고, 모든 프로퍼티 변수 앞에 "hwp." 붙이기 등

대략 아래와 같은 코드가 만들어졌습니다. 이렇게 실행해도 정상적으로 작동합니다.

5. 변경이 아니라, 현재 캡션의 위치를 알 수는 없을까요?
아래처럼 파라미터셋을 먼저 변수로 지정한 후에 GetDefaut를 하시고 나 서
파라미터셋의 아이템을 조회하시면 됩니다.
코드로 보여드리면, 아래는 수정 전의 코드이고
아래는 수정 후의 코드입니다.
콘솔에서도 한 번 실행해보겠습니다.

현재 문서에 설정된 값을 잘 출력해주었습니다.
(캡션이 위에 있을 때는 2를, 아래에 있을 때는 3을 리턴함)
이렇게 업무자동화 코드를 짜시면서도 스크립트 매크로 녹화 후 조금씩 수정하여 사용하면
빠르고 쾌적한 자동화 작업 하실 수 있을 것입니다.
그럼 이번 포스팅은 여기서 마칩니다.
행복한 하루 되세요!
국내 유일의 파이썬+한컴오피스 업무자동화 입문강의
움짤로 빠르게 배우는 파이썬-아래아한글 자동화 레시피 - 인프런 | 강의
파이썬으로 아래아한글을 다루는 짧은 예제코드들을 소개하고, 중간중간의 결과를 GIF로 보여드립니다. 동영상 강의가 아니지만 오히려 빠르게 배울 수 있고, 따라하기도 쉽습니다., - 강의 소개
www.inflearn.com
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
[QnA] 그림개체의 개체설명문 가져오기 (0) | 2022.12.10 |
---|---|
[QnA] 표 너비 조절이 되지 않습니다. (0) | 2022.12.09 |
[HDMI] 최종화 : 취합문서 스타일 교정 (1) | 2022.12.08 |
댓글