반응형
안녕하세요. 유투브 열심히 잘 보고 있습니다.
제게 꼭필요한 한글쪼개기 파일을 사용해보려고 하는데... 자꾸 에러가 나서 문의드립니다.
원래 파일쪼개기 실행하면, 접근허용 누른후에는 파일쪼개기 실행파일은 아무것도 안보이는것이 맞나요?? 사진첨부합니다.
파일쪼개기 실행하고, 한글문서 선택하고 있으면 꼭 멈춰있는것 같애요.
그러다 다시 파일쪼개기를 클릭했더니 또 오류가 나네요.
어떻게 사용해야 하는걸까요?
도와주셔서 감사드립니다.
수고하세요~
추측해보건대,
아래아한글 2014 이하 버전에는 쪽 복사 기능을 제공하지 않기 때문에 발생하는 오류라고 생각됩니다.
질문 주신 분 캡쳐화면을 보니 한/글2014 또는 VP를 사용하고 계신 것 같네요..
현재 제 컴퓨터에는 한/글 2020 버전이 설치되어 있습니다.
저 영상 작성 당시에는 아마 2018을 사용중이었던 것으로 기억합니다.
페이지를 나누는 코드를 작성할 때
API명령어 중 하나인 "쪽 복사하기", "쪽 자르기" 및 "쪽 붙이기" 기능을 활용해서 간편하게 작성을 했는데,
이번 포스팅에서는 파이썬으로 한/글 문서를 직접 한 쪽씩 잘라내서 따로 저장하는 프로그램을 만들어보겠습니다.
코드는 제법 간단한데요. 여백정보나 쪽번호, 머릿말 및 꼬리말 등은 무시한 상태입니다..
전체 코드와 실행화면을 먼저 보여드리겠습니다.
import win32com.client as win32 # 한/글 열기 위한 모듈
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") # 한/글 실행
hwp.XHwpWindows.Item(0).Visible = True # 한/글 백그라운드 해제
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") # 보안모듈 실행
hwp.Run("FileOpen") # 파일 열기 팝업 띄우기
page_count = hwp.XHwpDocuments.Item(0).XHwpDocumentInfo.PageCount # 전체 페이지수 저장
filepath = hwp.XHwpDocuments.Item(0).FullName # 현재 열린 문서의 전체경로 저장
hwp.HAction.Run("MoveDocBegin") # 문서 시작점으로 이동해서
for i in range(1, page_count + 1): # 페이지 수(1~23)만큼 순회하면서
hwp.HAction.Run("MoveSelLineEnd") # 라인전체(한페이지) 선택
조판부호_보이는_상태 = hwp.SelectionMode # 조판안보이면 선택 안 됨
if not 조판부호_보이는_상태: # 조판부호가 숨겨져 있으면
hwp.Run("ViewOptionCtrlMark") # 조판부호 보이게 변경
hwp.HAction.Run("MoveDocBegin") # 다시 문서 시작점으로 이동해서
hwp.HAction.Run("MoveSelLineEnd") # 라인전체 선택
hwp.HAction.GetDefault("FileSaveAs_S", hwp.HParameterSet.HFileOpenSave.HSet) # 다른이름으로 저장 액션 생성
hwp.HParameterSet.HFileOpenSave.filename = filepath.replace(".hwp", f"#{i}.hwp") # 원래파일명#페이지.hwp로 저장
hwp.HParameterSet.HFileOpenSave.Format = "HWP" # 포맷은 Native HWP
hwp.HAction.Execute("FileSaveAs_S", hwp.HParameterSet.HFileOpenSave.HSet) # 다른이름저장 실행
hwp.HAction.Run("Delete") # 현재문서 페이지 조판부호 삭제
hwp.HAction.Run("Delete") # 현재문서 빈 페이지 삭제
if not 조판부호_보이는_상태: # 조판부호 보이게 바꿨으면
hwp.Run("ViewOptionCtrlMark") # 다시 조판부호 안보이게 변경
msgbox = hwp.XHwpMessageBox # 메시지박스 생성
msgbox.string = f"총 {page_count}개의 파일로 \r\n분할작업이 완료되었습니다."
msgbox.Flag = 0 # [확인] 버튼만 나타나게 설정
msgbox.DoModal() # 메시지박스 보이기
hwp.Clear(1) # 문서 변경내용 버리고
hwp.Quit() # 한/글 종료
주석을 나름 꼼꼼하게 달았으므로 부가설명은 생략합니다.
위 코드를 파이참으로 한 번 실행해보겠습니다.
원하는 대로 잘 작동하는 것 같네요.
pyinstaller로 컴파일해서 실행파일을 만들어보겠습니다.
c:\...\> pip install pyinstaller
c:\...\> pyinstaller -F -w 문서쪼개기.py
-F 는 한 개의 exe파일로 생성하는 옵션, -w는 콘솔창을 띄우지 않는 옵션입니다.
실행 후 하위에 생성된 dist 폴더에 들어가면 컴파일된 exe파일이 생성되어 있습니다.
코드 자체는 30줄 밖에 아닌데,
파이썬과 pywin32모듈 등이 모두 포함되어 있어 용량이 10메가 정도가 되었네요.
마지막으로 컴파일한 exe파일을 실행해보겠습니다.
잘 작동하는 것 같네요.
컴파일한 실행파일도 업로드해둡니다. 도움이 되었으면 좋겠습니다.
궁금한 점 있으면 댓글로 알려주시길 바랍니다.
그럼 이번 포스팅은 여기서 마칩니다.
행복한 하루 되세요!
반응형
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
[QnA] 파이썬, 모듈 설치 및 코드 실행 따라해보기 (0) | 2022.11.09 |
---|---|
[QnA] 교정부호 시작/끝 위치를 파악해서 엑셀로 저장하는 프로그램 (0) | 2022.11.08 |
[QnA] 맞춤법 자동교정시 표시해 두기 (2) | 2022.10.28 |
댓글