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

在Lua中使用hpdf时加载模块失败,寻求技术帮助

Lua Haru PDF模块加载错误:undefined symbol: HPDF_LoadPngImageFromFile2

我尝试运行以下Lua代码生成PDF:

local hpdf = require "hpdf"
local pdf = hpdf.New()
if pdf then
  local page = hpdf.AddPage(pdf)
  local height = hpdf.Page_GetHeight(page)
  local width = hpdf.Page_GetWidth(page)
  local font = hpdf.GetFont(pdf, "Helvetica")
  hpdf.Page_SetFontAndSize(page, font, 24)
  hpdf.Page_BeginText(page)
  hpdf.Page_TextOut(page, 60, height - 60, "Hello from Haru")
  hpdf.Page_EndText(page)
  hpdf.SaveToFile(pdf, "hello.pdf")
  hpdf.Free(pdf)
else
  io.write("Error creating PDF object\n")
end

执行命令lua hello.lua时触发错误:

lua: error loading module 'hpdf' from file '/usr/lib/lua/5.2/hpdf.so':
/usr/lib/lua/5.2/hpdf.so: undefined symbol: HPDF_LoadPngImageFromFile2
stack traceback:
[C]: in ?
[C]: in function 'require'
hello.lua:1: in main chunk
[C]: in ?

我是Lua新手,需要解决这个问题。


问题原因

该错误源于Lua的hpdf模块(hpdf.so)编译依赖的Haru PDF库版本,与当前系统安装的Haru PDF库版本不匹配。模块中引用了HPDF_LoadPngImageFromFile2函数,但系统现存的Haru库未提供该符号。

解决步骤

  • 检查Haru PDF库版本:
    执行命令pkg-config --modversion libhpdf查看当前系统的Haru库版本。若版本偏旧,大概率缺少HPDF_LoadPngImageFromFile2(该函数为Haru较新版本新增)。
  • 更新Haru PDF库:
    通过系统包管理器更新库文件,以Debian/Ubuntu为例:
    sudo apt update && sudo apt install --reinstall libhpdf-dev libhpdf-doc
    
    若为源码编译安装,需下载Haru最新源码重新编译部署。
  • 重新编译Lua hpdf模块:
    若更新库后仍报错,说明当前hpdf.so是基于旧版Haru编译的,需找到lua-hpdf绑定模块的源码,配合新Haru库重新编译,再替换/usr/lib/lua/5.2/hpdf.so文件。
  • 匹配Lua与模块版本:
    确认当前Lua版本(此处为5.2)与hpdf.so编译时依赖的Lua版本一致,版本不匹配也可能引发符号错误。

内容的提问来源于stack exchange,提问作者N.Ekanayake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:35:30