본문 바로가기
아래아한글 자동화/python+hwp 중급

[python+hwp] 한/글2022 문서끼워넣기 버그와 대처방법

by 일코 2023. 2. 14.

버그신고

clapeyon님의 제보를 받고 테스트를 해봤는데

정말 문서 끼워넣기가 제대로 작동하지 않네요ㅜ

사실 저도 한/글 2022를 쓰고 있습니다.
처음에는 '이 분께서 뭔가 잘못 입력하셨겠지..' 싶었는데
테스트해보니까 정말 어떻게 해도 여백이 조절이 되지 않아서,
후다닥 포스팅을 적어봅니다.

문서 끼워넣기 대신 쪽복사를 이용한 방법입니다.
소스코드를 먼저 보여드리겠습니다.

import os
import win32com.client as win32
from tkinter.filedialog import askopenfilename, askopenfilenames


# def 페이지이동(hwp, page):
#     hwp.HAction.GetDefault("Goto", hwp.HParameterSet.HGotoE.HSet)
#     hwp.HParameterSet.HGotoE.SetSelectionIndex = 1  # 페이지 이동
#     hwp.HParameterSet.HGotoE.HSet.SetItem("DialogResult", page)
#     hwp.HAction.Execute("Goto", hwp.HParameterSet.HGotoE.HSet)


if __name__ == '__main__':
    본문경로 = askopenfilename(title="취합보고서를 선택하세요",
                           initialdir=os.getcwd(),
                           filetypes=[("아래아한글파일", "*.hwp *.hwpx")])
    첨부파일리스트 = askopenfilenames(title="붙임문서를 모두 선택하세요",
                              initialdir=os.path.dirname(본문경로),
                              filetypes=[("아래아한글파일", "*.hwp *.hwpx")])

    본문 = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
    본문.XHwpWindows.Item(0).Visible = True
    본문.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
    본문.Open(본문경로)
    본문.Run("MoveDocEnd")

    첨부 = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
    첨부.XHwpWindows.Item(0).Visible = True
    첨부.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")

    for 파일 in 첨부파일리스트:
        첨부.Open(파일)
        첨부.Run("MoveDocBegin")

        for 페이지 in range(1, 첨부.PageCount + 1):
            첨부.Run("CopyPage")
            본문.Run("PastePage")
            첨부.Run("MovePageDown")  # or 페이지이동(첨부, 페이지+1)

        첨부.HAction.Run("FileClose")

    첨부.Quit()

예제파일은 아래에 첨부하였습니다.

첨부문서붙이기.zip
13.04MB

 

실행화면은 아래와 같습니다.

실행화면

 

댓글