inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

[응용] 폴더에 있는 한/글 파일을 모두 열기

여러 개의 한글 문서를 합치는 방법 관련 후속 문의

해결된 질문

501

learner

작성한 질문수 27

2

여러 개의 한글 문서를 '문서 끼워 넣기' 기능을 이용해 합치는 방법 문의 -- 박주현 -- 24.10.17 14:56 관련입니다.

해당 문의에 대해 아래와 같이 코드를 답변 주셨었는데요.

 

from pyhwpx import Hwp  # 임포트

hwp = Hwp()  # 한/글 실행

# 샘플문서 생성
# 샘플문서 생성

import os

os.chdir("c:\\users\\user\\desktop\\combine")
for i in [
    "개구리",
    "너구리",
    "다람쥐",
    "라마",
    "미어캣",
    "방울새",
    "사자",
    "얼룩말",
    "지렁이",
    "참새",
    "코끼리",
    "토끼",
    "펭귄",
    "호랑이",
]:
    hwp.SelectAll()
    hwp.Delete()
    hwp.set_font(Height=40)
    hwp.insert_text(i)
    hwp.save_as(f"{i}.hwp")

# 끼워넣기
hwp.open(os.listdir()[0])  # "개구리.hwp" 열기
for i in os.listdir()[1:]:  # 첫 번째(0) 파일은 제외하고 두 번째(1)파일부터 아래 들여쓰기한 코드 반복
    hwp.MoveDocEnd()  # 한/글의 문서 끝으로 이동해서
    hwp.insert_file(i)  # 문서끼워넣기(기본값은 섹션, 글자, 문단, 스타일 모두 유지) 
hwp.save_as("취합본.hwp")  # 반복이 끝났으면 "취합본.hwp"로 다른이름으로저장

hwp.Quit()  # 한/글 프로그램 종료

 

인터프리터 버전의 문제 및 pyhwpx 패키지 설치 등의 문제가 있었지만 그것들은 해결하였고, 코드가 동작하는데까지는 성공하였습니다.

일코님의 결과물과 제 결과물이 다릅니다.

일코님의 결과물은 아래 스크린샷과 같습니다.

일코.png


 

반면에, 저의 "통합본.hwp"을 열어보면, 한 페이지마다 하나의 동물 이름이 입력되어 있는 것이 아니라 한 페이지 안에 모든 13개의 동물 이름이 아래 괄호 안과 같이 붙어 있는 형태입니다.
(개구리너구리다람쥐라마미어캣방울새사자얼룩말지렁이참새코끼리토끼펭귄호랑이)

아래 스크린샷은 제 노트북 화면이니 함께 참고 부탁드립니다.

1.png

 

같은 코드인데 왜 결과가 다른지 혹시 이유를 문의드려도 될까요?

혹시 끼워넣기 할 때 새 페이지로 넘기기 한 후 끼워넣을 수 있는 코드가 있는지 아시는지요?

 

참고로, 제가 수동으로 빈문서를 열고, 끼워넣기(ctrl-o)를 통해 글자모양유지, 스타일유지, 문단모양유지, 쪽모양유지 체크한 상태에서 넣기 하면, 다음 페이지로 넘긴 상태에서 끼워넣기가 잘 됩니다.
반면에 제가 파이참에서 위 코드를 넣고 실행했을 때는 다음 페이지로 넘긴 상태에서 끼워넣기가 되는 것이 아니라 본래의 페이지의 맨 하단 커서 위치 뒤로 붙으므로 의도하는 결과가 아닙니다.

python 한컴오피스 레벨업

답변 1

0

일코

주현님 안녕하세요?

hwp.insert_file 메서드는 아래아한글의 문서 끼워넣기( Ctrl- O )와 동일한 기능입니다.

아래아한글에서 (아마 특정 버전 이상부터는)

아래와 같은 옵션을 주고 문서를 25번 끼워넣기 하는 것과 같은데요.

image.png

위 화면에서 쪽 모양 유지 옵션이, 별도의 페이지로 끼워넣는 기능입니다.

 

추측해보건대, 주현님의 아래아한글 버전과 제 버전이 달라서 생기는 차이 아닌가 싶습니다.

hwp.insert_file(i, keep_section=True)로 파라미터를 추가하고 실행해도

한 페이지에 텍스트가 모두 들어가버린다면, hwp.BreakPage()를 추가로 실행하시면 되겠습니다.

코드는 아래와 같습니다.

#...

# 끼워넣기
hwp.open(os.listdir()[0])  # "개구리.hwp" 열기
for i in os.listdir()[1:]:  # 첫 번째(0) 파일은 제외하고 두 번째(1)파일부터 아래 들여쓰기한 코드 반복
    hwp.MoveDocEnd()  # 한/글의 문서 끝으로 이동해서
    hwp.BreakPage()  # <----------------------- 페이지나누기(Ctrl-Enter)
    hwp.insert_file(i)  # 문서끼워넣기(기본값은 섹션, 글자, 문단, 스타일 모두 유지) 
hwp.save_as("취합본.hwp")  # 반복이 끝났으면 "취합본.hwp"로 다른이름으로저장

hwp.Quit()  # 한/글 프로그램 종료

 

이렇게 hwp.BreakPage()를 추가해서 다시 실행해보시면 페이지가 나눠져서 병합되어 있을 것입니다.

 

1

learner

유레카~ hwp.BreakPage() 를 코드에 추가하니 일코님과 동일한 결과가 나타납니다.

[참고] hwp.insert_file(i, keep_section=True) 로 바꾸는 것은 실행결과에 변화가 없었음.

해결책을 알려주셔서 감사합니다.

hwp.BreakPage() # <----------------------- 페이지나누기(Ctrl-Enter)

섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?

0

77

1

hwp 병렬 작업시 클립보드 충돌문제

0

61

1

본문을 각주로 내리는 법

1

93

1

한글 자동화 삽도 삽입!!

1

388

2

한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ

1

240

2

빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다

1

120

2

사무실 컴퓨터ㅠ

0

98

2

글자입력 여러번 실행기

0

70

1

현재 커서 문단에 아무런 내용이 없는지 확인하기

1

103

1

특정 스타일을 찾아 이동하는 방법

1

166

2

한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?

1

1135

1

win32com 으로 hwp 문자열 검색하기 문의

1

225

2

[응용] 엑셀문서 값을 필드에 입력하기 질

1

124

1

표 병합하기 관련

0

143

0

메타태그 삽입 자동화

0

191

1

스크립트 매크로 초기화 하고 싶습니다.

1

274

2

한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.

1

271

1

표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기

1

280

2

스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.

1

286

0

하위의 여러 폴더 중 특정폴더의 사진만 추출하기

1

349

2

한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.

1

680

1

보유 특허 검색 페이지에서 검색이 되지 않습니다.

1

142

1

hwp 페이지별 분할 저장하는 코드 관련 문의

0

454

0

한글 문서에 사용된 폰트명 추출

1

653

1