c++对接pdfium(一)win系统篇

前言

因为在弄文件编辑这快,最高性能基本都是使用c++的pdfium库实现,今天这篇是使用win系统运行的,后面是wasm(对接进浏览器),在后面可能会对接安卓

开始

环境安装介绍(建议走AI进行安装),硬盘要够大,估摸整体要30GB多

  1. 要先安装Visual Studio工具
  2. git 克隆depot_tools工具
  3. 下载PDFium源码
  4. 开始编写C++代码

演示效果

项目架构

main.cpp

cpp 复制代码
#include <iostream>
#include "public/fpdfview.h"


int main() {

    std::cout << "PDFium Test Start\n";

    FPDF_InitLibrary();


    FPDF_DOCUMENT doc = FPDF_LoadDocument("ebook.pdf", nullptr);
    
    if(!doc){
        std::cout<<"open failed";
        return -1;
    }

    int pages = FPDF_GetPageCount(doc);

    std::cout<<"pages:"<<pages<<std::endl;

    FPDF_CloseDocument(doc);

    FPDF_DestroyLibrary();

    return 0;
}

CMakeLists.txt

cpp 复制代码
cmake_minimum_required(VERSION 3.20)

project(pdfium_demo)

set(PDFIUM_DIR D:/code/c++/pdfium)

add_executable(
    pdfium_demo
    main.cpp
)


target_include_directories(pdfium_demo PRIVATE
    ${PDFIUM_DIR}
)


target_link_directories(pdfium_demo PRIVATE
    ${PDFIUM_DIR}/out/Debug
)


target_link_libraries(pdfium_demo
    pdfium.dll.lib
)

使用 Developer Command Prompt for VS 命令窗口

cpp 复制代码
生成工程【修改CMakeLists.txt】
cmake -B build

编译
cmake --build build --config Debug
相关推荐
UIU1141 小时前
P1481 魔族密码
c++·算法·动态规划
nice_lcj5204 小时前
ThreadLocal 入门:它是怎么隔离数据的、为什么会导致内存泄漏
java·开发语言·后端·面试·并发编程·内存泄漏·threadlocal
紧跟先前的步伐4 小时前
Go AI Agent 实战 28|Agent 的预算、超时与停止条件
开发语言·人工智能·后端·ai·golang
bksczm5 小时前
InnoDB 行格式详解:DYNAMIC / COMPACT / COMPRESSED / REDUNDANT
java·开发语言·数据库
春涧草茶6 小时前
慢就是快16-1协程
开发语言·前端·python
Dovis(誓平步青云)6 小时前
启元 T1 Pro 人机相声搭档:语音-触摸双通道的启元机器人节奏引擎设计
开发语言·前端·javascript·microsoft·交互
做科研的周师兄6 小时前
【R语言实战】MixSIAR 氢氧同位素水源解析全流程:从混合空间校验到贝叶斯 MCMC 收敛诊断(后附完整代码)
java·大数据·开发语言
闻缺陷则喜何志丹7 小时前
【C++特性】四种类型转
c++·算法·类型转换
.痞老板.7 小时前
java ee--计算机是如何工作的
java·开发语言·java-ee
奇树谦8 小时前
Qt Quick 图片加载与 GPU 纹理机制详解:QImage、QQuickTextureFactory、QSGTexture 与异步加载
开发语言·qt·系统架构