261 lines
4.4 KiB
Go
261 lines
4.4 KiB
Go
package fitz_test
|
|
|
|
import (
|
|
"fmt"
|
|
"image"
|
|
"image/jpeg"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"git.ma-al.com/go-fitz"
|
|
)
|
|
|
|
func TestImage(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
tmpDir, err := os.MkdirTemp(os.TempDir(), "fitz")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for n := 0; n < doc.NumPage(); n++ {
|
|
img, err := doc.Image(n)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.jpg", n)))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
err = jpeg.Encode(f, img, &jpeg.Options{Quality: jpeg.DefaultQuality})
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f.Close()
|
|
}
|
|
}
|
|
|
|
func TestImageFromMemory(t *testing.T) {
|
|
b, err := os.ReadFile(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
doc, err := fitz.NewFromMemory(b)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
tmpDir, err := os.MkdirTemp(os.TempDir(), "fitz")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer os.RemoveAll(tmpDir)
|
|
|
|
for n := 0; n < doc.NumPage(); n++ {
|
|
img, err := doc.Image(n)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.jpg", n)))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
err = jpeg.Encode(f, img, &jpeg.Options{Quality: jpeg.DefaultQuality})
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f.Close()
|
|
}
|
|
}
|
|
|
|
func TestLinks(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
links, err := doc.Links(2)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if len(links) != 1 {
|
|
t.Error("expected 1 link, got", len(links))
|
|
}
|
|
|
|
if links[0].URI != "https://creativecommons.org/licenses/by-nc-sa/4.0/" {
|
|
t.Error("expected empty URI, got", links[0].URI)
|
|
}
|
|
}
|
|
|
|
func TestText(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
tmpDir, err := os.MkdirTemp(os.TempDir(), "fitz")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for n := 0; n < doc.NumPage(); n++ {
|
|
text, err := doc.Text(n)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.txt", n)))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
_, err = f.WriteString(text)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f.Close()
|
|
}
|
|
}
|
|
|
|
func TestHTML(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
tmpDir, err := ioutil.TempDir(os.TempDir(), "fitz")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for n := 0; n < doc.NumPage(); n++ {
|
|
html, err := doc.HTML(n, true)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.html", n)))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
_, err = f.WriteString(html)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f.Close()
|
|
}
|
|
}
|
|
|
|
func TestSVG(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
tmpDir, err := ioutil.TempDir(os.TempDir(), "fitz")
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for n := 0; n < doc.NumPage(); n++ {
|
|
svg, err := doc.SVG(n)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f, err := os.Create(filepath.Join(tmpDir, fmt.Sprintf("test%03d.svg", n)))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
_, err = f.WriteString(svg)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
f.Close()
|
|
}
|
|
}
|
|
|
|
func TestToC(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
_, err = doc.ToC()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestMetadata(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
|
|
meta := doc.Metadata()
|
|
if len(meta) == 0 {
|
|
t.Error(fmt.Errorf("metadata is empty"))
|
|
}
|
|
}
|
|
|
|
func TestBound(t *testing.T) {
|
|
doc, err := fitz.New(filepath.Join("testdata", "test.pdf"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
defer doc.Close()
|
|
expected := image.Rect(0, 0, 612, 792)
|
|
|
|
for i := 0; i < doc.NumPage(); i++ {
|
|
bound, err := doc.Bound(i)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if bound != expected {
|
|
t.Error(fmt.Errorf("bounds didn't match go %v when expedient %v", bound, expected))
|
|
}
|
|
}
|
|
|
|
_, err = doc.Bound(doc.NumPage())
|
|
if err != fitz.ErrPageMissing {
|
|
t.Error(fmt.Errorf("ErrPageMissing not returned got %v", err))
|
|
}
|
|
}
|