2025.02.25 - [파이썬 업무 자동화/한글 문서 작업 자동화] - 파이썬 한글 문서 매크로 제작기 (feat. ChatGPT) - 3. 회사명 갖고 오기

 

파이썬 한글 문서 매크로 제작기 (feat. ChatGPT) - 3. 회사명 갖고 오기

2025.02.23 - [파이썬 업무 자동화/한글 문서 작업 자동화] - 파이썬 한글 문서 매크로 제작기 - 2. 내용 바꾸기 파이썬 한글 문서 매크로 제작기 - 2. 내용 바꾸기2025.02.23 - [파이썬 업무 자동화/한글

sunnysides.tistory.com

이번 글에서는

한글 문서 pdf로 뽑아내기

를 해 보도록 하겠습니다.

뭔가 시작은 어려웠는데 정리하다 보니 왜 이렇게 쉬운 내용을 어려워했지 싶네요. 세상 만사 마음 먹기 나름이라는 옛말은 어디든지 해당되는 것 같네요ㅋㅋㅋ

그림 1. 이젠 익숙해진 지피티
그림 2. 엥 형이 왜 떠?

하.. 다시 문제가 생겼습니다. 자꾸 물어봐도 똑같은 대답 밖에 안 나오네요..

이렇게 '세계적으로(?) 유명하지 않은' + '내가 지금 필요한' 작업은 꼭 에러가 뜨더라구요. 하지만 걱정 마세요. 우리에겐 구글신이 있으니까...ㅋㅋㅋ

야매로 코드 짜깁기를 하던 우리는 도저히 각 함수들이 뭘 의미하는지 알 수 없습니다. 찾아보고 싶지도 않고, 찾았다고 알아먹을 수 있지도 않아요. 그럴 때는 항상 처음 사용한 라이브러리를 '뒤져본다'고 생각하시면 된답니다~

열심히 'win32com' 'hwpframe' 같은 걸 검색해본 결과(막무가내로 검색해서 어떻게 찾았는지 기억도 안 나네요ㅋㅋㅋ) 천재 한컴 개발자분들이 우리가 쓰던 라이브러리를 만들었다는 사실을 알아냈습니다.

https://store.hancom.com/board/devmanualList.do?

 

글로벌 소프트웨어의 리더, 한글과컴퓨터

 

store.hancom.com

여기에 우리가 사용할 만한 내용이 다 정리가 되어 있습니다!!!!

하지만 쓸 줄 모르죠?ㅋㅋㅋㅋㅋㅋㅋ

그림 3. 찾았다 인쇄..

문서를 뒤져서 프린트를 해 줄 것 같은 놈을 찾았습니다.

그림 4. 왜 pdf로 저장은 따로 있어..

겨우겨우 Action ID 가 Print이고, Item ID에서 PIT_UT1 Type의 3번이 pdf 파일로 저장인 것을 알았습니다. 찾았죠? 이제 다 끝났다고 보시면 됩니다. 오평파(이썬).

그림 5. 그렇구나.

뭔가 사용할 수 있을 줄 알았는데, 너무 어려웡.. 그렇다면!!

그림 6. 주워들은 거 조합해서 물어보기

답은 있어보이게 물어보기 신공입니다. 휴 역시 해결.

이렇게 챗지피티를 쓸 때도 필요한 요소를 대략적으로라도 찾아서 물어보면 해결의 실마리가 보인답니다...였습니다만...

 

그림 7. 이 새..친구는 머야...

하..............................에러 문구는 안 뜨고 저장도 잘 되는데 pdf 출력이 안 됩니다..........스트레스 받네요...

그림 8. 아니 드라이버 설치라니 한글 pdf 추출에 드라이버를 설치한 적이 없는데..

우리 친구가 의미 없는 대답만 반복하는 와중에, 답을 겨우 찾았습니다.

 

그림 9. 기본 설정은 분명 Microsoft PDF로 돼 있는데...

ㅋㅋㅋㅋㅋㅋㅋㅋ하.. 기본 설정은 분명 돼 있는데,,

그림 10. PDF 저장이 기본 옵션이네?!

제가 코드를 볼 때 분명 'Microsoft PDF 어쩌구'가 들어간 코드가 있고, SetItem("Device","3")으로 돼 있는 코드가 있었거든요. 그래서 왠~~~~~~~~지 그림 4에 있던 3번이 기본 설정에 있는 "PDF 저장" 얘인가 싶어서 눌렀더니

그림 11. 떄앰~

얘가 인쇄 버튼이 비활성화 되길래 더블클릭했더니 이렇게 뜨더라구요.. 이런 건 처음 봤다....

그림 12. 신기한 설정창..
그림 13. 해결따리~~

그렇게 따라했더니 해결!!! 휴.. 매우 기분이 좋아졌습니다.

그렇게 최종 코드는

import win32com.client as win32


hwp = win32.Dispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True  # 한글 창 보이기

file_path = "D:/한글 양식 자동화/양식.hwp"
pdf_path = "D:/한글 양식 자동화/tmp/양식.pdf"
hwp.Open(file_path, "","")

# 🔹 ③ 한글의 메시지 박스 모드 변경 (저장 시 창 뜨지 않도록)
hwp.SetMessageBoxMode(0x1000)

# 🔹 ② 인쇄 설정 값 가져오기
action = hwp.CreateAction("Print")
option = action.CreateSet()

# 🔹 ② PDF 저장을 위한 인쇄 설정
# hwp.HAction.Run("Print")  # 인쇄 창 직접 실행

action.GetDefault(option)  # 기본 인쇄 설정 불러오기

# 🔹 ③ 'Device'를 PDF로 변경 (3번 설정)
option.SetItem("Device", 3)

# 🔹 ④ PDF 파일명 설정
option.SetItem("FileName", pdf_path)

# 🔹 ⑤ 설정 적용 후 인쇄 실행
action.Execute(option)

# 한글 종료
hwp.Quit()

이렇게 나왔답니다^^

중간에 뜬금 없는 '메시지 박스 모드'가 생겼는데, 얘는 있든 없든 차이가 없던데, 뭔가 우리의 똑똑이 친구가 가르쳐 주기로는 같은 이름 파일이 있어도 자동으로 덮어쓰게 해주는 설정이라네요. 제 기준에서는 없어도 잘 덮어지긴 하던데 혹시나 싶어 놔뒀답니다.

 

드디어 끝이 보이는 것 같네요. 이제 지금까지 했던 코드를 조합해서 하나의 코드로 합체시키고, 하나의 프로그램으로 만든다면 좀 더 까리한(!) 프로젝트가 될 것 같습니다.ㅋㅋㅋ

+ Recent posts