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

R调用pdftools报poppler版本0.73.0低于0.89要求如何排查解决

poppler版本不匹配报错排查修复方案

报错核心原因:pdftools从3.0.0版本开始,字体数据读取相关接口要求系统级poppler依赖版本≥0.89,你当前环境调用的是0.73.0版本的底层poppler库,问题和R包本身的文件无关,手动替换R包文件无法解决。

第一步:定位R实际调用的poppler路径

不同系统定位命令如下,直接在R控制台运行即可:

  • Linux系统:
library(pdftools)
dll_path <- system.file("libs", .Platform$r_arch, paste0("pdftools", .Platform$dynlib.ext), package = "pdftools")
system(paste("ldd", dll_path), intern = TRUE)

返回结果中libpoppler.so对应的绝对路径,就是当前R加载的poppler库位置,0.73版本通常为系统默认源安装的旧版本,路径多在/usr/lib/x86_64-linux-gnu/下。

  • macOS系统:把上述命令中的ldd替换为otool -L即可,其余逻辑一致。
  • Windows系统:直接运行Sys.which("pdfinfo"),返回路径的上级目录就是pdftools调用poppler工具的根目录,若返回路径不是R包pdftools对应目录下的路径,说明PATH优先级被外部旧版poppler抢占。

第二步:分场景修复版本问题

  • Linux系统(默认apt/yum源poppler版本过低,Ubuntu18.04默认源恰好为0.73.0版本,是该报错高发场景)
    1. 先卸载系统旧版poppler开发组件:执行sudo apt remove libpoppler-cpp-dev libpoppler-dev(CentOS/RHEL对应执行sudo yum remove poppler-cpp-devel poppler-devel)
    2. 源码编译安装≥0.89版本的poppler,安装路径指定为/usr/local,编译完成后执行sudo ldconfig更新系统动态链接库缓存
    3. 回到R环境,卸载原有pdftools后从源码重新安装:
      remove.packages("pdftools")
      install.packages("pdftools", type = "source")
      
  • Windows系统
    1. 运行Sys.getenv("PATH")查看环境变量顺序,排查是否有MiKTeX、旧版QPDF、Git for Windows等软件自带的旧版poppler路径排在R库路径前面
    2. 将pdftools自带的poppler路径(即第一步Sys.which("pdfinfo")返回值的上级目录)添加到PATH变量最靠前位置,重启R会话即可
  • Conda虚拟环境运行R
    直接在对应conda环境终端执行conda install -c conda-forge poppler>=0.89更新依赖,更新完成后重启R即可,无需重装pdftools。

修复验证

重启R会话后运行如下命令,查看返回的poppler版本:

pdftools::poppler_config()

若返回的version字段≥0.89,即修复完成,字体数据读取接口可正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:01:06