본문 바로가기
Web

[PDFTron]Cmake와 Swig를 이용한 파이썬 개발환경 세팅

by 다봄이 2020. 8. 6.

개발환경 : 파이썬 3.7, 비쥬얼 스튜디오 2017, cmake 3.15.3, swig 3.0.12

(2020.02.07 포스팅)

오늘은 웹 프린트 서비스 개발의 코어 역할 중 하나인 MS office 문서 파일 형식을 pdf 파일로 변환하는 임무를 부여받았다. pdf 변환 서버를 자체적으로 구축하였으나 속도가 너무 느려서 PDFTron에서 지원하는 모듈을 몇 가지 사용하기로 했단다.

다른 인턴분들에 비해 영어 실력이 좋다는(?) 이유로 다른 분이 애먹던 업무(?)를 넘겨받았다(?)

구동 환경은 windows, 파이썬 API를 선호하시는 책임님을 위해 C++ API를 읽고 파이썬 코드로 짜 보았다.

그 전에, PDFTron 구동을 위한 개발환경 세팅 과정이 SDK에 써 있는대로 따라하다 보면 몇 가지 문제가 발생해서 헷갈리는 부분이 있다. 이를 정리해 보려 한다.

준비물(사용 버전)
파이썬(3.7), cmake, swig, visual studio(2017)

  • cmake : 오픈소스를 다양한 운영체제에서 문제 없이 사용하게 하기 위한 빌드 도구.
  • swig : c/c++로 작성된 프로그램/라이브러리를 파이썬 등 다양한 언어에서 사용할 수 있게 두 언어를 연결.

    1. 준비물 준비 및 환경변수 설정

    1) 제어판 -> 시스템 및 보안 -> 시스템 -> 고급 시스템 설정 -> 환경변수

2) 윈도우 검색 -> '고급 시스템 설정' 입력 -> 환경변수

3) 윈도우 키 + R -> SystemPropertiesAdvanced -> 환경변수

편리한 방법으로 시스템 속성 창으로 이동한다.


환경 변수에서 시스템 변수 부분의 path에 파이썬, cmake, swig 경로를 모두 등록해줘야 한다.

이 때, 환경변수는 모두 응용 프로그램(exe)가 있는 경로로 등록해야 한다. cmake의 경우는 gui 파일이 있는 경로로 입력한다.

2. 프로젝트 폴더 생성

원하는 경로에 프로젝트 폴더를 생성하고 폴더 내에서 Git Bash를 통해 리눅스 기반의 명령어로 진행하는 것이 편리하다.

원하는 프로젝트 폴더 내부에서 git bash를 이용하여

$ git init
$ git clone https://github.com/PDFTron/PDFNetWrappers.git


3. PDFTron Python Library 다운로드


위의 PDFTron PDF 라이브러리를 다운로드 받으면 폴더 이름은 PDFNetC64이다. 위 폴더에서 Headers와 Lib를 복사한다. 클론한 프로젝트 폴더 내부의 PDFNetC 폴더에 다음과 같이 복사한 Headers와 Lib을 붙여넣는다.

4. Build 폴더 생성 및 build 설정


이제 다시 PDFNetWrappers 폴더에서 Build 폴더를 생성하고, Build 폴더로 들어가서 다시 Git Bash를 생성한다. 이렇게 해야 SDK에 있는 명령어대로 입력해도 오류가 발생하지 않는다.

(위 폴더는 이미 빌드를 마친 상태라서 여러 빌드용 파일들이 생성되어 있다.)

Git Bash에서 SDK에 써 있는 명령어대로 입력한다.

$ cmake -D BUILD_PDFNetPython=ON ..


Build 폴더 내부에서 git bash를 실행시켰기 때문에 해당 경로로 cmake configure 및 generate가 진행된다.

맨 마지막 줄에 빌드 파일이 생성된 경로까지 알려준다. 이제 비쥬얼 스튜디오를 이용해 PDFNetLanguageBindings.sln를 열어서 SDK에 있는대로 X64 Release 모드를 설정한다.

5. PDFNetPython 파이썬 확장 파일 카피 및 빌드

SDK에서는 여기까지 설정을 마친 후 Copy _PDFNetPython.pyd to the build lib folder.라고 써 있다.

$ cp ".\x64\Release\_PDFNetPython.pyd" ".\lib\Release"

리눅스에서는 cp 명령어를 사용하면 파일/폴더를 카피할 수 있다.

하지만 여기서 오류가 있다. 여기까지 설정을 마친 상태에서는 x64폴더가 없어서 해당 경로/파일이 존재하지 않는다는 오류가 뜰 것이다.


PDFNetLanguageBinding 솔루션의 install을 한 번 빌드하면 x64폴더가 생성된다. 이 때는 빌드가 끝나면실패 1이 뜰 것이다. 이제 다시 cp 명령어를 입력한다.


오류 없이 명령이 수행되었다. 다시 한번 솔루션의 install을 빌드하면 실패 없이 빌드가 성공한다.

댓글