본문 바로가기
아래아한글 자동화/pyhwpx 사용법

다른 hwp파일을 삽입하는 insert_file 메서드 사용법

by 일코 2024. 1. 3.

현재 열려 있는 문서 안에 특정 문서의 내용을 삽입하는 메서드에는

hwp.insert와 hwp.insert_file 등이 있다.

1. hwp.insert는 순수하게 문자열 정보만 가져오고 싶을 때(hwp.open처럼)
2. hwp.insert_file은 스타일, 쪽 서식, 글자 및 문단모양까지 함께 가져오고 싶을 때 사용한다.

한/글 버전에 따라 작동방식이 다를 수 있다.
현재 시연 버전은 한글2018 최신 업데이트 버전이다.

바탕화면에 아래와 같은 bucket_list.hwp 라는 문서가 있을 때

이 문서를 각각의 메서드로 삽입해보자.

1. hwp.insert로 삽입해보면

이렇게 서식이 깨지는 등의 문제가 생길 수 있다.

2. hwp.insert_file로 삽입하면

페이지서식과 스타일, 글자 및 문단모양이 잘 유지된다.

그래서 insert_file이 insert보다 유용하게 쓰이는 경우가 많다.

 

insert_file은 파일명 외에 4개의 파라미터가 있어서, 유지할 항목을 각각 선택할 수 있다.
4개의 파라미터는 아래와 같다. (기본값은 네 개 다 True)

1. keep_section : 쪽 모양 유지 여부
2. keep_charshape : 글자모양 유지 여부
3. keep_parashape : 문단모양 유지 여부
4. keep_style : 스타일 유지 여부

 

예를 들어 쪽 모양을 유지하지 않겠다고 하면(keep_section=False)
동작은 아래처럼 바뀐다.

insert_file 메서드를 사용할 때 주의할 점은,

insert_file을 실행하면, 현재 캐럿이 위치한 곳에 문서가 삽입되므로,
적절히 BreakPara나 BreakPage, MoveDocEnd 등의 메서드를 사용하여 캐럿의 위치를 설정해줘야 한다.

insert_file 실행시 문서는 캐럿의 뒤에 삽입되고,
캐럿은 여전히 **삽입된 문서의 앞**에 있기 때문에
무작정 insert_file 메서드를 반복하면
결과적으로 문서가 역순으로 삽입되어 있게 된다.

예를 들어 아래와 같이 코드를 짜면
 문서가 역순 삽입되어 있다.

 

반대로 아래와 같이 반복문 사이에
hwp.MoveDocEnd()를 넣어주기만 해도
문서가 순서대로 삽입되는 것을 확인할 수 있다.

hwp.MoveDocBegin();hwp.Delete()가 궁금하신 분들도 있을까?

코드 말미에
hwp.MoveDocBegin() 및 hwp.Delete()의 의도가 궁금하신 분들도 있을 것이다.
직접 실행해보시면 바로 아시겠지만,
insert_file 메서드는 현재 페이지를 덮어쓰지 않고 다음 페이지에다 삽입하므로
여전히 1페이지(빈 문서)가 남아있게 된다. 이걸 삭제해 주는 코드이다.
큰 의미가 있는 코드는 아니다.

 

그럼 hwp.insert_file 메서드는 어디 많이 쓰일까?

개인적으로는 보고서를 한 개의 파일로 작성하거나 PDF로 완성할 때
별첨의 붙임문서 등을 하나로 병합하는 작업에 가장 많이 사용했다.
그밖에도 여러 문서를 병합하는 등의 작업에도 쓰일 수 있겠다.

 

관련 메서드

위에서 소개한 insert나 insert_file 메서드는 문서 전체를 삽입한다.
특정 문서의 특정 페이지만 삽입하고 싶은 경우에는 어떻게 처리해야 할까?
아쉽게도 한/글2014VP (가급적 2018 이상)의 버전을 사용해야 원활히 처리할 수 있다.
해당 버전부터 CopyPage나 PastePage, DeletePage를 지원하기 때문이다.

단계적으로 2010~2014 버전에서도 자동화 작업을 수월하게 해주는 메서드를 추가 예정이지만,
예외나 버그가 발생할 수 있으므로, 가급적 최신버전의 아래아한글을 사용하는 것을 추천한다.

 

댓글