You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
4 years ago | |
|---|---|---|
| .. | ||
| include/mupdf | 4 years ago | |
| libs | 4 years ago | |
| testdata | 4 years ago | |
| .appveyor.yml | 4 years ago | |
| .travis.yml | 4 years ago | |
| AUTHORS | 4 years ago | |
| COPYING | 4 years ago | |
| README.md | 4 years ago | |
| example_test.go | 4 years ago | |
| fitz.go | 4 years ago | |
| fitz_cgo.go | 4 years ago | |
| fitz_cgo_extlib.go | 4 years ago | |
| fitz_test.go | 4 years ago | |
README.md
go-fitz
Go wrapper for MuPDF fitz library that can extract pages from PDF and EPUB documents as images, text, html or svg.
Install
go get -u github.com/gen2brain/go-fitz
Build tags
extlib- use external MuPDF librarystatic- build with static external MuPDF library (used withextlib)nopie- use this with GCC older then 7
Example
package main
import (
"fmt"
"image/jpeg"
"io/ioutil"
"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 := ioutil.TempDir(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)
}
_, err = f.WriteString(text)
if err != nil {
panic(err)
}
f.Close()
}
// Extract pages as html
for n := 0; n < doc.NumPage(); n++ {
html, err := doc.HTML(n, true)
if err != nil {
panic(err)
}
f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.html", n)))
if err != nil {
panic(err)
}
_, err = f.WriteString(html)
if err != nil {
panic(err)
}
f.Close()
}
}