Tempo Di Valse

[Windows] PDFium Windows DLL 추출하기 본문

개발/ETC

[Windows] PDFium Windows DLL 추출하기

TempoDiValse 2022. 2. 4. 18:23
반응형

먼저, PDFium 이란... 대표적인 PDF 라이브러리 인데, 예전에는 Foxit 이란 회사에서 유료로 라이센스를 팔고 했던 걸로 기억하는데 구글이 회사를 인수했는 지 무료로 사용하도록 열어놓은 것 같다.

 

Android 에서도 PDF 렌더할 일이 있을 때에는 어떤 친절한 외국 사람이 Android 에서 사용할 수 있게 포팅해준 라이브러리를 사용했었는데, 이번에는 내가 윈도우용으로 포팅하여 사용할 일이 생겨버렸으니..

 

C++ 도 자바처럼 사용하는 초보수준인데 어찌저찌하다가 결국은 하긴해서 정리하고자 작성하려고 한다.

 


 

0. 설치하기 이전에

기본적으로 설치되어있어야 하는 것들이 있다.

- 비쥬얼 스튜디오 (나는 VS2019로 사용했다)

- Python (나는 파이썬 3버전을 깔았다)

 

그리고 필요한 툴이 있다. PDFium 이 Chromium 과 관계된 어쩌구저쩌구라고 써있는데, Chromium 을 설치하기 위해서 사용되는 빌드 툴을 가지고 PDFium 을 설치하는 데에 도움을 주는 것 같다.

 

이름은 depot_tools 라고 하는데, 구글에서 사용하는 빌드 툴인 것 같다.

 

depot_tools_tutorial(7)

This section will demo what a typical workflow looks like when writing, updating, and committing multiple CLs. $ fetch chromium ... truncated output ... $ cd src $ ./build/install-build-deps.sh ... truncated output ... Pull in all dependencies for HEAD $ g

commondatastorage.googleapis.com

해당 사이트에서 git 주소를 내려받은 다음 사이트에 나와있는 대로 윈도우 환경변수에 해당 루트를 추가하여 전역에서 사용할 수 있도록 만들어준다.

 

Setting up 까지만 봐주면 될 것 같다.

 

1. 다운로드

해당 사이트는 PDFium 을 다운로드 하여 설치하는 방법이 담겨진 아주 거지같이 적혀있는 불친절한 구글 설명서이다. Readme 를 이렇게 적어놓으면 다른 사람들은 어떻게 사용하라는 지 모르겠다.

 

 

PDFium - PDFium

PDFium Prerequisites PDFium uses the same build tooling as Chromium. See the platform-specific Chromium build instructions to get started, but replace Chromium's “Get the code” instructions with PDFium's. CPU Architectures supported The default archite

pdfium.googlesource.com

 

 

이 그지같은 README 에서 Get the code 부분이 depot_tools 를 설치하며 사용할 수 있게된 gclient 라는 툴을 이용하여 PDFium 을 설치할 수 있는 명령어 순서를 제공해준다.

 

그런데, gclient 로 git 주소를 입력해준 다음에 'gclient sync' 부분을 입력하고 나면

No downloadable toolchain found 라는 문구가 마지막에 나오게 된다. 그러면서 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 이라는 지시사항이 나오는데, 이 지시사항을 그대로 CMD에 붙여넣으면 된다.

 

set 하고서는 아무것도 뜨지는 않는게 정상이고, 그 다음에 다시 gclient sync 를 호출하도록 한다

다 만들어졌으면 "cd pdfium" 을 쳐서 폴더 안으로 들어간다.

 

2. 빌드 파일 만들기

설명서에 있는 Generate the build files 부분이 되겠다. 이 부분에서는 gn 이라는 툴이 사용되는데, 옵션 값을 넣어주면 해당 옵션에 맞게 빌드를 뽑아내 주는 것 같다. 이 옵션을 사용해서 DLL 파일을 추출 할 수 있게 되는 것이다.

 

먼저, CMD 창에서 다음과 같이 입력해준다.

 

gn gen out/Default

 

해당 명령어는 gen 이라고 써있는 것보니 generate 인 것 같은데, 명령어를 입력하게 되면 pdfium/out/Default 라는 폴더가 만들어지고 내부에는 알수없는 많은 파일들이 들어가있다. 빌드에 필요한 파일들 같아보였다.

 

다음으로,

 

gn args out/Default

 

를 입력한다. 해당 명령어를 입력하면 notepad 메모장이 뜨게되는데, 이 파일 내부에 옵션을 넣어서 파일을 추출하도록 한다.

 

여기에 입력할 것은 구글 설명서에 있는 것을 조금 바꿔넣도록 한다.

is_debug = false  # Enable debugging features.

pdf_use_skia = false
pdf_use_skia_paths = false

pdf_enable_xfa = false
pdf_enable_v8 = false

pdf_is_standalone = true
is_component_build = true
 

use_goma 라고 써있는 것은 구글 직원들만 true 로 사용한다고 써있는 것 같고,

XFA 랑 V8 은 무슨 기능인지 모르지만 안쓴다고 했고,

나머지 두개만 true 로 했는데, 여기에서 is_component_build 라고 써있는 부분이 true 여야 Window 환경에서 사용할 수 있는 DLL 파일이 뽑아진다.

 

이렇게 작성하고나서 notepad 를 종료하면 CMD 창에서 Generating files... 문구가 뜨고 완료 메세지가 뜬다.

이 두 명령어가 Done 이 뜨면 제대로 파일을 뽑아낼 수 있는데, 이 중에 뭐라도 어긋났다 하면 이상한 메세지가 뜨며 빌드가 되지 않기 때문에 꼭 두 명령어가 Done 이 들어가 있어야 한다.

 

한 예로, 처음에 나도 빌드할 때에 이상한 문구들이 뜨긴 했는데 잘 보니 Window Debugger 쪽에서 DLL 파일을 찾을 수 없다고 나오는 것이었다. dbgcore.dll 인지 dbghelp.dll 인지 뭐가 없다고 나왔는데, 해당 문제는 다음 사이트에서 문제를 해결했다.

 

 

Download Debugging Tools for Windows - WinDbg - Windows drivers

This page provides downloads for the Windows Debugging tools, such as WinDbg.

docs.microsoft.com

그 다음 마지막으로 다음 명령어를 입력한다.

ninja -C out/Default

 

빌드 툴체인은 ninja 라는 것을 활용하는 것 같다. ninja 가 가볍고 빠르다는 얘기를 언젠가 들은 것 같지만 나는 뭐가 빠른 지 1도 모르는 앱/웹 개발자라서 그냥 그러려니 한다.

 

해당 명령어를 치게 되면 이제 파일이 빌드하는 모습을 CMD 에서 확인할 수 있는데, 대략 2000개의 파일을 훑어보면서 빌드를 하는 것 같다.

 

다 빌드가 된다면,

라는 언어가 뜨고 탐색기를 통해서 out/Default 폴더로 들어가게 되면 pdfium.dll 파일이 보일 것이다.

 

3. 비쥬얼 스튜디오 적용

나는 빌드된 파일들은 사용하고있는 프로젝트에 넣어 사용하고 있는데, 프로젝트로 넣어줄 것들은 다음과 같다

 

- include 헤더 : pdfium 폴더 내에 public 에 있는 헤더파일들

- obj 파일

- dll 파일

 

비쥬얼 스튜디오 적용하는 것은 여러 블로그에도 나와있고, 윈도우 개발자들은 알만한 항목이니 패스하도록 한다.

 

반응형
Comments