파이썬으로 특정 폴더에 있는 한글(hwp)파일들을 PDF로 전환하려고하는데..
한글에서 마지막 저장 시 두쪽 모아찍기로 인쇄하고 저장을 하면 해당 설정을 기억해서 파이썬으로 불러들여서 PDF로 저장하면 한페이지에 두장 모아 찍기로 PDF가 저장이 됩니다.
저장된 파일의 최종 인쇄설정을 무시하고 종이 한장에 1페이지 인쇄 설정한 상태로 전환하여 PDF로 저장하고 싶은데.. 쉽지 않네요
파이썬으로 여러 개의 HWP 파일을 PDF로 변환하는 건 사실 굉장히 간단한 작업입니다. 코드도 짧죠.

예를 들어, 위와 같이 hwp파일이 여러 개 있고, 동일한 파일명에 확장자만 바꿔서 PDF파일을 생성하려면?
아래와 같이 코드를 짜볼 수 있겠죠.
다소 간단한 코드지만 아래처럼 잘 실행되는 것을 볼 수 있습니다.

그런데 예상치 못한 문제가 한 가지 발생합니다.
ㅁㄴㅇㄹ - 복사본 (2).hwp 파일은 원래 이렇게 생겼는데

변환된 PDF파일을 열어보니, 2쪽 모아찍기가 적용되어 있습니다?

어라? 동일한 내용의 ㅁㄴㅇㄹ.PDF 파일은 1쪽씩 잘 변환되어 있는데요?

질문자님이 지금 딱 이 상황인 겁니다.
수백(?) 개의 한/글 파일을 PDF로 변환하고 있는데 몇 개의 파일들만 수작업 때 모아찍기 설정 후에 저장한 상태라서
위의 예시와 같이 모아찍기로 출력이 되어버린 겁니다.
시간 아깝게 이걸 언제 하나씩 일일이 열어보면서 확인하고, 변환하고, 저장하고, 다시 출력할까요ㅜㅜㅜ
이 때 파이썬으로 모아찍기를 일괄해제할 수 있을까요?
예. 가능합니다.
대신 위에서 사용한 단축명령어로는 모아찍기 해제 코드가 먹지 않으므로(버그인 듯?)
아래처럼 코드를 바꾸면 됩니다.
아래 코드는 kosohn님께서 댓글로 알려주셨습니다.
다시 한 번 감사드립니다.
이상입니다. 넘 간단하네요^^
다시 한 번 테스트를 해보고 마치겠습니다.
다시 한 번 복사본 (2), (3), (4) 파일을 모아찍기로 설정 및 저장한 후에

파이썬으로 각각 파일을 열고 PDF변환을 시작합니다.

모아찍기로 설정되어 있던 한/글 파일도 모두 기본인쇄로 변경되어 PDF변환이 완료되었습니다.
끝으로, 한 가지 기억해 두셔야 할 것은
(중요한 점은 아니지만) 이렇게 모아찍기를 해제하고 출력을 하더라도,
한/글 파일을 열어보면 여전히 "2쪽모아찍기"로 저장되어 있다는 점입니다.
질문자 님의 문제도 이렇게 해결하시기를 바랍니다.
아래부터는 xml편집을 통한 변경방법입니다.
삽질 히스토리이므로ㅜ 무시 바랍니다.
제 대답은 "...물론 가능하기는 하다" 입니다.
굳이 pyautogui나 win32 모듈을 써서 마우스나 키보드를 조작하는 (제가 좋아하지 않는) RPA 방식이 아니라도
가능한데, 다만 특정 메서드가 만들어져 있는 게 아니라서 구현이 조금 복잡합니다...
(제가 지식이 짧아서 더 멋진 방법을 아직 못 찾았습니다.)
복잡한 방법을 먼저 말씀드리면,
① hwpx로 포맷변환 후 압축을 풀고
② settings.xml을 열어서 PrintMethod 값을 4(2쪽모아찍기)에서 0(보통출력)으로 고치고
③ 다시 zip 압축하고 hwpx 또는 hwp로 확장자를 고치면 됩니다...
이건 사실 뭐.. 배보다 배꼽이 큰 느낌이네요. 파일 해킹하는 줄ㄷㄷ
사실 아주 간단한 방법도 있기는 합니다.
3.0~97 버전의 hwp나, 개방형 표준문서(owpml) 또는 hwpml 등의 포맷으로 변환(hwp.SaveAs)한 후
변환된 파일을 다시 열면, 모아찍기 설정값이 초기화되기는 합니다.
변환하는 코드는 매크로녹화로 아주 간단히 얻을 수 있겠고요.
(다만, 포맷변환으로 인해 일부 서식이 깨질 리스크가 있겠습니다.)
한/글 파일은 어디서 어떻게 깨질지 모르기 때문에
리스크가 가장 적어 보이는 "복잡한 방법"을 코드와 주석으로 설명드리겠습니다.
코드는 아래와 같습니다. 주석을 많이 남겼습니다.
모아찍기상태인지 확인하는 함수와, 모아찍기를 보통출력으로 변환하는 두 개의 함수를 만들어보았습니다.
그리고 전체 코드는 아래와 같습니다.
필요하신 분 계시면 활용하시라고 하드코딩을 줄이고 간단한 GUI도 tkinter로 붙여놓았습니다.
한 번 테스트해볼까요?
현재 복사본(2), 복사본(3), 복사본(4) 등 세 개의 파일을 모아찍기 상태로 저장해 두었습니다.

코드를 돌려보겠습니다.

의도대로 모아찍기가 전부 해제된 것을 확인할 수 있었습니다.
마치며
쉽다면 쉽지만 어렵다면 어려운 내용의 포스팅이었던 것 같습니다.
이런 포스팅 때문에 한/글 자동화에 혹여 부담을 느끼시거나 겁을 먹지 않으셨으면 좋겠습니다.
여러분이 활용하시게 될 한/글 보고서 자동화 작업의 약 90%는 정말정말 단순한 필드삽입 노가다일 거라고 확신합니다.
실제로 제가 가장 자주 받는 많은 질문도 누름틀과 필드 관련이고요..
그 외에 루틴하지만 시간이 너무 많이 걸리는 작업인데 파이썬으로 자동화하기 어렵다?
그러면 방명록에 사연 적어주시거나, 메일(martinii.fun@지메일)로 보내주세요.
저는 이미 밑천이 다 동난 상태라서 더 포스팅할 내용도 없습니다.
심지어 코딩이나 컴퓨터와는 아무 상관도 없는 업에 종사하고 있어서, 아이디어 짜낼 시간 내기도 귀찮습니다.
그러니, 질문 보내 주시면 감사한 마음으로 답변 작성 드리겠습니다.
그럼 이번 포스팅은 여기서 마칩니다.
행복한 하루 되세요!!

'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
정부부처 보도자료에 필드가 적용되어 요약 언어모델 데이터셋 만들기 쉬워졌다 (0) | 2022.09.22 |
---|---|
PDF드라이버를 직접 골라서 변환하는 두 줄 코드 (0) | 2022.09.21 |
[QnA] (5/5) 특정단어를 포함한 문단을 표로 감싸기-최종 (0) | 2022.09.19 |
댓글