본문 바로가기
업무자동화/파이썬-아래아한글 자동화 응용

hwp의 API는 왜 이렇게 복잡할까?

by 회사원코딩 2020. 4. 1.
반응형

오늘 어떤 구독자 분의 질문메일에
"한/글 문서를 PNG포맷으로 저장할 수 있나요?"라는
질문이 있었다.

이건 사실 간단한 질문인데,
hwp에서 제공하는 API 중에 이미지로 저장하는
CreatePageImage라는 메서드가 있기 때문이다.
물론 사용법도 간단하다.

근데 조금만 살펴보면 문제가 있다.
우선, 위의 메서드는 GIF와 BMP포맷만을 제공한다.
PNG포맷으로 출력하려면
PrintToImage라는 메서드를 사용해야 하는데
이런 종류의 메서드는 파라미터를
파이썬문법처럼 괄호 안에 넣는 게 아니라
GetDefault로 메서드를 초기화(?)하고
모든 파라미터를 HParameterSet을 통해 별도 입력 후
Execute 메서드로 실행해야 한다.
(사실 모든 메서드는 이런 구조다. 단축키 개념의 간편한 메서드들이 있지만, 내부는 위와 같다.)
작성해야 할 코드 길이가 한 줄에서 수십줄로 바뀐다.
스크립트매크로를 녹화하면 다소 간단할 수 있지만
또다른 문제가 있다.
GetDefault의 인자로 들어가는 메서드 이름을 알아내기 위한 문서, 파라미터를 검색하기 위해 여는 문서, 그리고 위 메서드를 실행하는 방법이 나와 있는 문서가 모두 따로 있다.
(부가적으로 오토메이션용 참고문서와 언어별 자동화예제 문서가 또 있다.)
그리고 분량도 상당하다. 간단한 사무업무 자동화를 공부하기 위해 위의 API문서들을 일독하기는 불가능에 가깝다.
이렇게 가까스로 API메서드와 파라미터를 알아내고 나서도 문제가 몇가지 발생한다.
하나는 메서드가 성공적으로 실행이 되지 않더라도 에러메시지가 없는 경우가 많다. 이런 때에는 파라미터 하나씩을 넣고 빼 가며 어느 파라미터가 문제가 없는지 확인한 다음 문제가 될법한 파라미터를 적절히 바꿔보거나 제거해봐야 한다. 실행이 될 때까지..
보통은 이 시점에 포기를 한다.
이런 경우가 자주 있는데,
API문서를 한/글2010 이후로 10년간 업데이트하지 않았기 때문이기도 하고,
또다른 이유로 win32의 MakePy문제로 일부 메서드의 파라미터는 한/글 내부 스크립트와 대소문자에 차이가 생긴다. FileName이 파이썬에서는 filename으로 바뀐다든지 하는 식이다. 다행히 이런 경우는 "어느 파라미터가 존재하지 않는다"는 오류메시지가 나오고, docstring을 통해 대소문자 점검을 해 주면 된다.

마지막으로, 제대로 작동하는 코드를 작성했지만
꼭 필요하지 않은 파라미터는 빼주는 작업도 필요하다.
필수가 아닌 파라미터들이 모두 들어가 있어서
코드의 군살을 빼주는 작업을 해주는 것이 좋다(고 생각한다).
물론 이는 매번 테스트를 하면서 작업한다.
...하루종일 잡고 있어도 끝나지 않는다.

이게 내가 아래아한글 자동화 유튜브를 시작한 이유이기도 하다.
누가 이러고 앉았겠는가ㅜ

 

 


회사원코딩이 추천하는 오늘자 파이썬 입문교재 3종

 

1. 모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초

 

모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초

COUPANG

www.coupang.com

파이썬으로 프로그래밍에 처음 입문하기엔 아주 재미있고 쉽게 배울 수 있음.
다른언어 사용자가 파이썬을 배우는 교재로는 비추천. 다소 가벼운 느낌.

 

2. 초보자를 위한 파이썬 200제

 

초보자를 위한 파이썬 200제

COUPANG

www.coupang.com

깔끔한 예제와 소스에 대한 자세한 설명이 돋보이는 교재.
입문-초급-중급-고급 난이도로 단계별 도전이 가능한 꽤 괜찮은 입문서.

 

3. 혼자 공부하는 첫 프로그래밍 with 파이썬:1:1 과외하듯 배우는 왕초보 코딩 입문서

 

혼자 공부하는 첫 프로그래밍 with 파이썬:1:1 과외하듯 배우는 왕초보 코딩 입문서

COUPANG

www.coupang.com

초유의 베스트셀러 "혼공파"마저도 당신에게 어렵게 느껴진다면?
유튜브 무료강의, 온라인실습과 다양한 이미지를 통해
제목대로 "1:1과외하듯" 파이썬을 배워볼 수 있음.

반응형

댓글2

  • 지나가다 2021.01.26 23:46

    FileName 과 filename 사이에서 고민하고 있는 "회사원코딩"의 수강생입니다. ^^;

    다음 내용을 좀 더 상세히 알 수 있을까요?
    어떻게 docstring을 통해 대소문자 점검을 할 수 있는지?
    미리 어떤 인자가 파라미터로 사용할 수 있는지? 알수 있는 방법에 대해 조언 부탁드립니다.


    API문서를 한/글2010 이후로 10년간 업데이트하지 않았기 때문이기도 하고,
    또다른 이유로 win32의 MakePy문제로 일부 메서드의 파라미터는 한/글 내부 스크립트와 대소문자에 차이가 생긴다. FileName이 파이썬에서는 filename으로 바뀐다든지 하는 식이다. 다행히 이런 경우는 "어느 파라미터가 존재하지 않는다"는 오류메시지가 나오고, docstring을 통해 대소문자 점검을 해 주면 된다.
    답글

    • 회사원코딩 2021.01.27 18:45 신고

      지나가다님 안녕하세요? 댓글이 너무 길어져서ㅜㅜㅜ 포스팅으로 옮겨적느라 시간이 좀 걸렸습니다.. 아래 포스팅을 참고해주세요ㅎ

      https://employeecoding.tistory.com/136

      보안승인모듈 잘못 기재된 부분 지적해주셔서 감사드립니다. 클리앙에 포스팅 한 번 공유했는데 많은 분들이 글을 읽어주셔서, 글 올리기 더 조심스럽습니다. 유튜브는 영상 한 번 편집해서 올리고 나면 정정하기가 너무 번거로웠는데, 그나마 블로그는 고쳐쓰면 되니까 다행이에요ㅎ

      편안한 밤 되시길 바랍니다^^