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

如何无需安装poppler-utils,将pdftotext嵌入Go二进制文件?

无需依赖poppler-utils的Go PDF文本提取方案

你当前的代码通过调用系统pdftotext命令实现PDF文本提取,但该命令属于poppler-utils包,导致程序必须在已安装该包的环境才能运行。要摆脱这个依赖,直接使用Go原生PDF处理库即可。

推荐使用ledongthuc/pdf库

这个库支持保留PDF原布局的文本提取,和你用pdftotext -layout的效果一致,且无需任何外部依赖。

安装库

go get github.com/ledongthuc/pdf

替换代码

把你的代码换成下面的实现:

package main

import (
	"fmt"
	"os"

	"github.com/ledongthuc/pdf"
)

func main() {
	pdfPath := "/Volumes/T7Touch/Learn/e-statement-to-t-account/5725299769Jul2022.pdf"
	file, err := os.Open(pdfPath)
	if err != nil {
		panic(err)
	}
	defer file.Close()

	reader, err := pdf.NewReader(file, int64(file.Size()))
	if err != nil {
		panic(err)
	}

	var fullText string
	for pageNum := 1; pageNum <= reader.NumPage(); pageNum++ {
		page, err := reader.Page(pageNum)
		if err != nil {
			panic(err)
		}
		// 提取带布局的文本,对应pdftotext的-layout参数
		pageText, err := page.ExtractText()
		if err != nil {
			panic(err)
		}
		fullText += pageText
	}

	fmt.Println(fullText)
}

其他备选库

  • unipdf:功能更丰富,支持PDF编辑、加密等操作,但免费版本有使用限制,商用需付费授权。
  • pdfreader:轻量级解析库,适合只需要简单文本提取的场景。

方案优势

  • 编译后的二进制文件可独立运行,无需用户安装poppler-utils或其他工具。
  • 跨平台兼容性好,在Linux、Mac等系统上都能直接使用,不需要额外配置。

内容的提问来源于stack exchange,提问作者Jason Rich Darmawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:33:24