직장인

[회사원] 업무 코딩기록 - (PyHwpx)Hwp_File Slicing(1EA)

cyy1211 2024. 12. 24. 15:37
728x90
반응형
import os
from pyhwpx import Hwp

# 작업 대상 파일 경로 설정
folder_path = "C:\\Users\\user\\Desktop\\VSCode(python)\\(CODE)Pyhwpx\\raw"
output_folder_path = "C:\\Users\\user\\Desktop\\VSCode(python)\\(CODE)Pyhwpx\\result"  # 결과물이 저장될 경로

# 분할파일 저장할 폴더 생성 (폴더가 없을 경우에만 생성)
if not os.path.exists(output_folder_path):
    os.mkdir(output_folder_path)

# 원본문서 열기
Hwp = Hwp()

# 작업 대상 파일 열기 (test.hwp 또는 test.hwpx)
file_to_open = None
if os.path.exists(os.path.join(folder_path, "test.hwp")):
    file_to_open = os.path.join(folder_path, "test.hwp")
elif os.path.exists(os.path.join(folder_path, "test.hwpx")):
    file_to_open = os.path.join(folder_path, "test.hwpx")

if file_to_open:
    Hwp.open(file_to_open)  # 작업 대상 파일 경로에서 파일 열기
else:
    print("작업 대상 파일이 존재하지 않습니다.")
    exit()

# 한페이지씩 잘라서 저장하기(HWP문서 쪽번호 순차배열필수, 조판부호에서 새쪽번호로 시작 모두 삭제, 그림형식 표는 글자처럼 취급으로 선처리)
Hwp.add_doc()  # 새 문서 열림
Hwp.switch_to(0)  # 원본 문서에서
for i in range(1, Hwp.PageCount + 1):  # 1~100페이지까지
    Hwp.goto_page(i)  # i번째 페이지로 이동
    Hwp.CopyPage()  # 페이지 복사해서
    Hwp.switch_to(1)  # 새 문서에다가
    Hwp.PastePage()  # 끼워넣기 한 후
    Hwp.MoveDocBegin()  # 기존의 1페이지(빈 페이지)로 가서
    Hwp.DeletePage()  # 빈 페이지 삭제 후
    Hwp.save_as(os.path.join(output_folder_path, f"{i}.hwp"))  # 다른 이름으로 저장
    Hwp.switch_to(0)  # 다시 원본문서로 이동

# 한글 프로세스 종료
try:
    Hwp.Quit()  # pyhwpx에서 제공하는 종료 명령(존재할 경우)
except AttributeError:
    print("pyhwpx 종료 명령 실패, 강제 종료 시도 중...")

print("끝.")

 

※ 상기 코드는 일코(ilco)님 도움을 받아 작성하였습니다.

728x90
반응형