바탕쪽, 머리말, 꼬리말, 미주 장식, 두 줄이상의 빈 줄 삭제
hwp 파일에서 바탕쪽, 머리말, 꼬리말, 미주 장식, 두 줄이상의 빈 줄을 자동으로 없애고자 강의를 수강합니다. 힌트를 얻고 싶습니다.
답변 1
2
안녕하세요?
아래의 샘플문서를 가지고 설명을 드리겠습니다.
https://drive.google.com/file/d/1P5EPY4QHjTUXGAFi7QxQ1IrXgrCGdfhd/view?usp=sharing

1. 바탕쪽 제거하기
문서 내 모든 바탕쪽을 제거하는 가장 간단한 방법은,
pyhwpx를 최신버전으로 설치하신 뒤(현재 0.35.1),
아래 코드를 실행하시면 됩니다.
from pyhwpx import Hwp
hwp = Hwp()
hwp.DeleteDocumentMasterPage()
조금 부연설명을 드리면,
바탕쪽은 특이하게 "구역" 개념을 사용하고, 컨트롤의 위치가 보이지 않는 게 특징입니다. 미주나 각주, 표, 그림 등은 "컨트롤"이라 불리는 개체로 수정/삭제가 가능한 반면, 바탕쪽은 그냥 구역의 바탕쪽 편집에 들어가 내용을 지우면 됩니다. 구체적으로는 바탕쪽 편집상태에서 Run("DeleteDocumentMasterPage")를 실행하거나(문서의 모든 바탕쪽 제거), Run("DeleteSectionMasterPage")를 실행(현재 구역의 바탕쪽만 제거)하면 됩니다. pyhwpx에서는 두 가지 기능 모두 메서드 형태로 제공하고 있으므로, 간편하게 바탕쪽을 제거하실 수 있습니다.
2. 문서 내 모든 머리말과 꼬리말 제거
머리말, 꼬리말을 제거하는 코드는 아래와 같습니다.
from pyhwpx import Hwp
hwp = Hwp()
for ctrl in hwp.ctrl_list:
if ctrl.UserDesc.startswith("머리말") or ctrl.UserDesc.startswith("꼬리말"):
hwp.DeleteCtrl(ctrl)
머리말이나 꼬리말은 단순한 컨트롤이므로
컨트롤을 순회하면서 DeleteCtrl을 실행하시면 됩니다.
3. 미주 장식(?) 제거
미주 장식이 정확히 뭘 의미하는지 몰라서ㅜ
우선 미주를 제거하는 코드를 보여드립니다.
(사실 위의 머리말, 꼬리말 제거 코드와 거의 유사합니다.)
for ctrl in hwp.ctrl_list:
if ctrl.UserDesc.startswith("미주"):
hwp.DeleteCtrl(ctrl)
4. 두 줄 이상의 빈 줄을 없애기
아래아한글의 find 액션을 활용하시는 걸 추천드립니다.
아래와 같은 방식으로 find 메서드를 쓰실 수 있습니다.
(참고로 ^n은 아래아한글의 "줄바꿈"을 의미합니다.)
while True:
hwp.MoveDocBegin()
if hwp.find("^n^n"):
hwp.find_replace("^n^n", "^n")
# 또는 단순히 hwp.BreakPara()
else:
break
사실 가장 간단하고 예외 없는 문서를 가지고 시연을 해드려서
실제 복잡한 문서에서는 여러가지 예외사항이 발생할 수 있습니다.
실행해보시고, 적용해보시면서
오류가 나거나 이해가 안 가게 작동하는 부분이 있다면
추가댓글 남겨주시기 바랍니다.
행복한 하루 되세요^^
1
아래아한글에서 페이지 또는 단을 바꾸는 표시가 ^n 외에 무엇인가 또 있나보군요 ㅠㅠ 찾아보겠습니다. 미주 장식은 미주 또는 각주를 표시할 때 나타나는 밑줄 부분을 말씀드린 것입니다.
2
앗, ^n은 특수하게 찾기/찾아바꾸기에만 쓰이는 기호입니다.
일반적으로 줄바꿈을 삽입할 때에는 insert_text 메서드로
문자열 \r\n (또는 \r) 을 입력하시거나,
혹은 hwp.BreakPara() 메서드로 직접 줄바꿈을 삽입하실 수 있습니다.
그 외의 줄바꿈은
hwp.BreakLine(), # 줄 나눔, Shift-Enter
hwp.BreakPage(), # 쪽나누기, Ctrl-Enter
hwp.BreakColumn() # 단 나누기(배분다단), Ctrl-Shift-Enter
hwp.BreakSection() # 구역 나누기 Shift-Alt-Enter
hwp.BreakColDef() # 단 정의 삽입, Ctrl-Alt-Enter
등의 메서드를 사용하시면 됩니다^^
1
아래아한글 조작하듯 하시면 됩니다.
왼쪽에서 hwp.Delete()를 싱행하시거나,
오른쪽에서 hwp.DeleteBack()을 실행하시거나요.
지워야 할 줄바꿈이 여러 개라면, 찾아가는 방식을 결정해야 합니다. 제일 간단한 방법은, 위에서 보여드린 찾기/찾아바꾸기를 실행하는 방법입니다.
구체적인 예시를 들어주시면 해법을 알려드리겠습니다^^
섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?
0
76
1
hwp 병렬 작업시 클립보드 충돌문제
0
58
1
본문을 각주로 내리는 법
1
93
1
한글 자동화 삽도 삽입!!
1
384
2
한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ
1
233
2
빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다
1
118
2
사무실 컴퓨터ㅠ
0
96
2
글자입력 여러번 실행기
0
67
1
현재 커서 문단에 아무런 내용이 없는지 확인하기
1
102
1
특정 스타일을 찾아 이동하는 방법
1
162
2
한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?
1
1110
1
win32com 으로 hwp 문자열 검색하기 문의
1
222
2
[응용] 엑셀문서 값을 필드에 입력하기 질
1
123
1
표 병합하기 관련
0
140
0
메타태그 삽입 자동화
0
191
1
스크립트 매크로 초기화 하고 싶습니다.
1
270
2
한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.
1
271
1
표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기
1
273
2
스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.
1
283
0
하위의 여러 폴더 중 특정폴더의 사진만 추출하기
1
345
2
한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.
1
658
1
보유 특허 검색 페이지에서 검색이 되지 않습니다.
1
139
1
hwp 페이지별 분할 저장하는 코드 관련 문의
0
447
0
한글 문서에 사용된 폰트명 추출
1
646
1





