-
PDFium 라이브러리 삽질기 - 7Libraries 2019. 12. 30. 17:32
PDFium 라이브러리 삽질기 - 7
윈도우에서 사용하기 (2)
작성일자: 2019년 12월 30일
작성자: N3
* PDFium 라이브러리 삽질기(정적 라이브러리 빌드하기) - 1
* PDFium 라이브러리 삽질기(동적 라이브러리 빌드하기) - 2
* PDFium 라이브러리 삽질기(libpdfium RPM 패키징하기) - 3
* PDFium 라이브러리 삽질기(GDAL 과 함께 사용하기) - 4
앞에서 Windows DLL 을 빌드하는 방법을 다루어보았다.
이번에는 PDFium.dll 을 실제 사용하는 예제를 함께 빌드해서, 제대로 동작하는지 테스트해 본다.
1. PDFium Viewer
PDFium 라이브러리를 사용하는 C# 으로 작성된 라이브러리다.Pdfium Viewer 는 현재 개발은 중단되었으며, 사용하기 위해서는 pdfiumviewer.cpp 를 pdfium 빌드에 추가해야 한다.
위 소스를 pdfium/fpdfsdk 폴더에 복사하고, 해당 폴더의 BUILD.gn 파일에 다음을 추가한다.
source_set("fpdfsdk") {
sources = [
"cpdfsdk_actionhandler.cpp",
"cpdfsdk_actionhandler.h",
"cpdfsdk_annot.cpp",
...
"ipdfsdk_annothandler.h",
"pdfiumviewer.cpp",
]
Dynamic DLL 을 새로 만든다.
- FPDF_EXPORT void FPDF_CALLCONV FPDF_AddRef()
- FPDF_EXPORT void FPDF_CALLCONV FPDF_Release()
두 개의 함수가 Export 되어서 보인다.Github 에서 소스를 내려받으면, 빌드된 DLL 이 packages 폴더에 있다.
PDFiumViewer 는 DLL 이며, 실행 프로그램은 아니다.
이 프로젝트에는 두 개의 Viewer 샘플 프로그램이 들어 있다. WPF 와 일반 C# 데모 뷰어다.
소스의 Packages 폴더에 이미 빌드된 DLL 이 들어 있으며, 프로젝트 파일에서 해당 DLL 을 데모 프로그램의 폴더에 복사하도록 되어 있다.
해당 DLL 을 바꿔치거나 알아서 적당히 사용하면 된다.
private static bool TryLoadNativeLibrary(string path)
{
if (path == null)
return false;
path = Path.Combine(path, IntPtr.Size == 4 ? "x86" : "x64");
path = Path.Combine(path, "Pdfium.dll");
// 테스트를 위한 임의 수정
if (!File.Exists(path))
return false;
IntPtr handle = LoadLibrary(path);
if (handle == IntPtr.Zero)
{
return false;
}
return true;
}
실행 플랫폼에 따라 x86 폴더와 x64 에서 DLL 을 찾고 있다.
참고로, x64 윈도우에서 아래 옵션을 추가해서 x86 DLL 을 빌드하면 된다.
target_cpu = "x86"
혹시 DLL 파일을 찾았는데 DLL 을 찾지 못해 오류가 나는 경우,
D:\PDF\pdfium\out\viewer>dumpbin /DEPENDENTS pdfium.dll
Microsoft (R) COFF/PE Dumper Version 14.24.28314.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file pdfium.dll
File Type: DLL
Image has the following dependencies:
ADVAPI32.dll
GDI32.dll
USER32.dll
KERNEL32.dll
icuuc.dll
zlib.dll
MSVCP140.dll
VCRUNTIME140.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
위 4개의 DLL 을 추가 복사해서 사용한다.
API-MS 로 시작하는 것들은 대개 재배포 패키지를 설치하면 될 것이다.
데모 프로그램을 실행해서, PDF 를 열면 다음과 같이 PDF 내용을 읽을 수 있다.
3. PDFium Editor
PDFium Editor 는 위의 PDFium Viewer 를 개선한 버전이다.
이름에서 보듯, Editor 기능을 추가했다.
소스를 내려받고, 설루션 파일을 열어서 빌드해 본다.
nuget 으로 DataMatrix 를 설치해 준다.
그리고, 파일이 존재하지 않는 두 개의 파일(GMsign.pfx, key) 은 프로젝트에서 제거한다.
대충 빌드하고 나니, 예제 프로그램이 아니라, Dynamic Library 만 생성하고 만다.
예제는 어디에 있는가?
4. PDFiumSharp Library
검색결과 PDFium 을 사용하는 두 개의 닷넷 프로그램을 찾았다. 220달러 이상의 상용 라이브러리와 MS-RL 라이센스의 오픈소스 라이브러리다.
빌드하기 전에 두 개의 텍스트 템플릿 파일(tt) 을 먼저 실행해야 한다.
- PDFiumSharp\Types\FPDF_Typedefs.tt
- PDFiumSharp\PDFium.tt
솔루션 탐색기에서 오른쪽 마우스로 선택한 후, run(사용자 지정도구 실행) 한다.만약, 새로 빌드한 DLL 을 사용할려면, 아래 코드를 맞게 수정하거나, 빌드된 DLL 을 덮어씌워준다.const string DllName32 = "pdfium_x86";const string DllName64 = "pdfium_x64";- PDFiumSharp.dll
- PDFiumSharp.GdiPlus.dll
- PDFiumSharp.Wpf.dll
- PDFiumSharp.Xwt.dll
4개의 DLL 을 빌드할 수 있다.테스트는 samples 폴더의 프로그램을 사용하면 된다.
'Libraries ' 카테고리의 다른 글
PDFium 라이브러리 삽질기 - 6 (0) 2019.12.26