You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Poppler构建Demo编译失败,且无法提取PDF扫描件图片

用Poppler提取扫描PDF图片及编译问题解决

提取PDF页面图片的方法

扫描生成的PDF本质是每页包含一张光栅图像,不需要遍历页面元素,直接用poppler::page的render_to_image方法就能生成对应页面的poppler::image对象,示例代码如下:

#include <poppler-document.h>
#include <poppler-page.h>
#include <poppler-image.h>
#include <iostream>
#include <string>

int main() {
    // 加载目标PDF文档
    poppler::document* doc = poppler::document::load_from_file("scan.pdf");
    if (!doc) {
        std::cerr << "加载PDF文件失败" << std::endl;
        return 1;
    }

    const int total_pages = doc->pages();
    for (int page_idx = 0; page_idx < total_pages; ++page_idx) {
        poppler::page* current_page = doc->create_page(page_idx);
        if (!current_page) {
            std::cerr << "创建第" << page_idx + 1 << "页对象失败" << std::endl;
            continue;
        }

        // 以300DPI渲染页面为图像(扫描件常用DPI,可按需调整)
        poppler::image page_img = current_page->render_to_image(300, 300);
        if (page_img.is_valid()) {
            const std::string save_path = "page_" + std::to_string(page_idx + 1) + ".png";
            // 保存为PNG格式,也可指定"jpeg"等其他格式
            page_img.save(save_path, "png");
            std::cout << "已保存:" << save_path << std::endl;
        } else {
            std::cerr << "渲染第" << page_idx + 1 << "页图像失败" << std::endl;
        }

        delete current_page;
    }

    delete doc;
    return 0;
}

编译失败的解决方法

能找到头文件但编译失败,大多是链接阶段缺失Poppler库或编译参数配置错误,可按以下方式处理:

  • 用GCC直接编译时,通过pkg-config自动获取编译和链接参数:
    g++ your_demo.cpp -o your_demo `pkg-config --cflags --libs poppler-cpp`
    
  • 用CMake构建时,需引入Poppler的依赖配置:
    cmake_minimum_required(VERSION 3.10)
    project(PopplerImageExtract)
    
    find_package(Poppler REQUIRED)
    
    add_executable(extract_img your_demo.cpp)
    target_include_directories(extract_img PRIVATE ${POPPLER_INCLUDE_DIRS})
    target_link_libraries(extract_img PRIVATE ${POPPLER_LIBRARIES})
    
  • 确保已安装完整的Poppler开发包:
    • Debian/Ubuntu系:sudo apt install libpoppler-cpp-dev
    • Fedora/RHEL系:sudo dnf install poppler-cpp-devel
    • Windows平台需确保编译环境能找到Poppler的静态/动态库文件

内容的提问来源于stack exchange,提问作者Dov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 06:40:07