GxPDF is a modern, high-performance PDF library for Go, built with clean architecture and Go 1.25+ best practices.
- Text & Typography - Rich text with multiple fonts, styles, and colors
- Graphics - Lines, rectangles, circles, polygons, ellipses, Bezier curves
- Gradients - Linear and radial gradient fills
- Color Spaces - RGB and CMYK support
- Tables - Complex tables with merged cells, borders, backgrounds
- Images - JPEG and PNG with transparency support
- Fonts - Standard 14 PDF fonts + TTF/OTF embedding
- Document Structure - Chapters, auto-generated Table of Contents
- Annotations - Sticky notes, highlights, underlines, stamps
- Interactive Forms - Text fields, checkboxes, radio buttons, dropdowns
- Security - RC4 (40/128-bit) and AES (128/256-bit) encryption
- Watermarks - Text watermarks with rotation and opacity
- Page Operations - Merge, split, rotate, append
- Table Extraction - Industry-leading accuracy (100% on bank statements)
- Text Extraction - Full text with positions and Unicode support
- Image Extraction - Extract embedded images
- Export Formats - CSV, JSON, Excel
go get github.com/coregx/gxpdfRequirements: Go 1.25 or later
package main
import (
"log"
"github.com/coregx/gxpdf/creator"
)
func main() {
c := creator.New()
c.SetTitle("My Document")
c.SetAuthor("GxPDF")
page, _ := c.NewPage()
// Add text
page.AddText("Hello, GxPDF!", 100, 750, creator.HelveticaBold, 24)
page.AddText("Professional PDF creation in Go", 100, 720, creator.Helvetica, 12)
// Draw shapes
page.DrawRectangle(100, 600, 200, 100, &creator.RectangleOptions{
FillColor: &creator.Blue,
StrokeColor: &creator.Black,
StrokeWidth: 2,
})
if err := c.WriteToFile("output.pdf"); err != nil {
log.Fatal(err)
}
}c := creator.New()
c.SetEncryption(creator.EncryptionOptions{
UserPassword: "user123",
OwnerPassword: "owner456",
Permissions: creator.PermissionPrint | creator.PermissionCopy,
Algorithm: creator.EncryptionAES256,
})
page, _ := c.NewPage()
page.AddText("This document is encrypted!", 100, 750, creator.Helvetica, 14)
c.WriteToFile("encrypted.pdf")c := creator.New()
c.EnableTOC()
ch1 := creator.NewChapter("Introduction")
ch1.Add(creator.NewParagraph("Introduction content..."))
ch1_1 := ch1.NewSubChapter("Background")
ch1_1.Add(creator.NewParagraph("Background information..."))
ch2 := creator.NewChapter("Methods")
ch2.Add(creator.NewParagraph("Methods description..."))
c.AddChapter(ch1)
c.AddChapter(ch2)
c.WriteToFile("document_with_toc.pdf")import "github.com/coregx/gxpdf/creator/forms"
c := creator.New()
page, _ := c.NewPage()
// Text field
nameField := forms.NewTextField("name", 100, 700, 200, 20)
nameField.SetLabel("Full Name:")
nameField.SetRequired(true)
page.AddField(nameField)
// Checkbox
agreeBox := forms.NewCheckbox("agree", 100, 660, 15, 15)
agreeBox.SetLabel("I agree to the terms")
page.AddField(agreeBox)
// Dropdown
countryDropdown := forms.NewDropdown("country", 100, 620, 150, 20)
countryDropdown.AddOption("us", "United States")
countryDropdown.AddOption("uk", "United Kingdom")
page.AddField(countryDropdown)
c.WriteToFile("form.pdf")doc, _ := gxpdf.Open("bank_statement.pdf")
defer doc.Close()
tables := doc.ExtractTables()
for _, table := range tables {
fmt.Printf("Table: %d rows x %d cols\n", table.RowCount(), table.ColumnCount())
// Export to CSV
csv, _ := table.ToCSV()
fmt.Println(csv)
}github.com/coregx/gxpdf
├── gxpdf.go # Main entry point
├── export/ # Export formats (CSV, JSON, Excel)
├── creator/ # PDF creation API
│ └── forms/ # Interactive form fields
└── internal/ # Private implementation
├── application/ # Use cases (extraction, reading)
└── infrastructure/ # PDF parsing, encoding, writing
- API Reference - Full API documentation
- Examples - Code examples for all features
- Architecture - DDD architecture overview
- Contributing - Contribution guidelines
- Security - Security policy
# Run all tests
go test ./...
# Run with race detector
go test -race ./...
# Run with coverage
go test -cover ./...- PDF reading and parsing (PDF 1.0-2.0)
- Text extraction with positions
- Table extraction (100% accuracy)
- CSV/JSON/Excel export
- Creator API (text, graphics, tables)
- JPEG/PNG image support
- TTF/OTF font embedding
- RC4/AES encryption
- Chapters and TOC
- Annotations
- Interactive forms (AcroForm)
- Watermarks
- Page operations (merge, split, rotate)
- Form filling (fill existing forms)
- Form flattening
- Digital signatures
- PDF/A compliance
- SVG import
GxPDF is released under the MIT License. See LICENSE for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with Go 1.25+ and Domain-Driven Design