Skip to content

Repository files navigation

PDF Reader

Built with WeBuild

A simple Go library which enables reading PDF files. Forked from https://github.com/rsc/pdf

Features

  • Get plain text content (without format)
  • Get Content (including all font and formatting information)

Install:

go get -u github.com/ledongthuc/pdf

Examples:

  • Check in examples/ folder

Read plain text

package main
import (
"bytes""fmt""github.com/ledongthuc/pdf"
)
funcmain() {
pdf.DebugOn=truef, r, err:=pdf.Open("./pdf_test.pdf")
iferr!=nil {
panic(err)
}
deferf.Close()
varbuf bytes.Bufferb, err:=r.GetPlainText()
iferr!=nil {
panic(err)
}
buf.ReadFrom(b)
content:=buf.String()
fmt.Println(content)
}

Read all text with styles from PDF

package main
import (
"fmt""github.com/ledongthuc/pdf"
)
funcmain() {
f, r, err:=pdf.Open("./pdf_test.pdf")
iferr!=nil {
panic(err)
}
deferf.Close()
sentences, err:=r.GetStyledTexts()
iferr!=nil {
panic(err)
}
// Print all sentencesfor_, sentence:=rangesentences {
fmt.Printf("Font: %s, Font-size: %f, x: %f, y: %f, content: %s \n",
sentence.Font,
sentence.FontSize,
sentence.X,
sentence.Y,
sentence.S)
}
}

Read text grouped by rows

package main
import (
"fmt""os""github.com/ledongthuc/pdf"
)
funcmain() {
content, err:=readPdf(os.Args[1]) // Read local pdf fileiferr!=nil {
panic(err)
}
fmt.Println(content)
return
}
funcreadPdf(pathstring) (string, error) {
f, r, err:=pdf.Open(path)
deferfunc() {
_=f.Close()
}()
iferr!=nil {
return"", err
}
totalPage:=r.NumPage()
forpageIndex:=1; pageIndex<=totalPage; pageIndex++ {
p:=r.Page(pageIndex)
ifp.V.IsNull() ||p.V.Key("Contents").Kind() ==pdf.Null {
continue
}
rows, _:=p.GetTextByRow()
for_, row:=rangerows {
println(">>>> row: ", row.Position)
for_, word:=rangerow.Content {
fmt.Println(word.S)
}
}
}
return"", nil
}

Demo

Run example

About

PDF reader

Topics

Resources

Stars

615 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages