首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用go-fitz读取PDF

什么是 go-fitz? go-fitz 是 Go 语言的一个库,它封装了 MuPDF 的强大功能,用于处理 PDF、EPUB 和 MOBI 文档。该库允许开发者轻松提取 PDF 文档中的页面为图像(JPEG、PNG、TIFF 等)、文本、HTML 或 SVG。

安装

go get github.com/gen2brain/go-fitz

使用指南

1. 打开 PDF 文档

doc, err := fitz.New("test.pdf")

defer doc.Close()

2. 提取页面为图像

for n := 0; n < doc.NumPage(); n++ {

img, err := doc.Image(n)

if err != nil {

panic(err)

}

f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.jpg", n)))

if err != nil {

panic(err)

}

err = jpeg.Encode(f, img, &jpeg.Options{jpeg.DefaultQuality})

if err != nil {

panic(err)

}

f.Close()

}

这段代码遍历 PDF 文档中的所有页面,将每个页面提取为 JPEG 图像,并将其保存在磁盘上。doc.NumPage() 获取页面总数,doc.Image(n) 提取第 n 页的图像。

3. 提取页面为文本

text, err := doc.Text(0)

doc.Text(0) 提取第一页的文本,可以通过此方法提取所有页面的文本。

4. 提取页面为 HTML

html, err := doc.HTML(0)

doc.HTML(0) 提取第一页的 HTML 表示,也可以提取所有页面的 HTML。

5. 提取页面为 SVG

svg, err := doc.SVG(0)

doc.SVG(0) 提取第一页的 SVG 表示,也可以提取所有页面的 SVG。

完整示例

package main

import (

"fmt"

"image/jpeg"

"os"

"path/filepath"

"github.com/gen2brain/go-fitz"

)

func main() {

doc, err := fitz.New("test.pdf")

if err != nil {

panic(err)

}

defer doc.Close()

tmpDir, err := os.MkdirTemp(os.TempDir(), "fitz")

if err != nil {

panic(err)

}

// Extract pages as images

for n := 0; n < doc.NumPage(); n++ {

img, err := doc.Image(n)

if err != nil {

panic(err)

}

f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.jpg", n)))

if err != nil {

panic(err)

}

err = jpeg.Encode(f, img, &jpeg.Options{jpeg.DefaultQuality})

if err != nil {

panic(err)

}

f.Close()

}

// Extract pages as text

for n := 0; n < doc.NumPage(); n++ {

text, err := doc.Text(n)

if err != nil {

panic(err)

}

f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.txt", n)))

if err != nil {

panic(err)

}

f.Write([]byte(text))

f.Close()

}

}

此完整示例提取 PDF 文档的所有页面为图像和文本。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O1xp11L7mxygl7OtnihV6L5w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券