Referencia API
Primitivas PDF
Referencia de API de generacion PDF de bajo nivel (Capa 1)
Descripcion general
El paquete pdf (Capa 1) proporciona primitivas PDF de bajo nivel. La mayoria de los usuarios solo necesitan las funciones de color de este paquete — el resto es utilizado internamente por el motor de diseno.
import "github.com/gpdf-dev/gpdf/pdf"
Colores
Los colores son los tipos mas comunmente usados del paquete pdf.
Constructores de color
// RGB (float values 0.0 – 1.0)
pdf.RGB(1.0, 0.5, 0.0) // Orange
// Hex (uint32)
pdf.RGBHex(0xFF6B6B) // Coral
pdf.RGBHex(0x1A237E) // Dark blue
// Grayscale (0.0 = black, 1.0 = white)
pdf.Gray(0.0) // Black
pdf.Gray(0.5) // Medium gray
pdf.Gray(1.0) // White
// CMYK (for print)
pdf.CMYK(0, 1, 1, 0) // Red in CMYK
Colores predefinidos
pdf.Black // Gray(0)
pdf.White // Gray(1)
pdf.Red // RGB(1, 0, 0)
pdf.Green // RGB(0, 1, 0)
pdf.Blue // RGB(0, 0, 1)
pdf.Yellow // RGB(1, 1, 0)
pdf.Cyan // RGB(0, 1, 1)
pdf.Magenta // RGB(1, 0, 1)
Uso de colores
Los colores se usan con las opciones de texto TextColor() y BgColor():
c.Text("Red on yellow",
template.TextColor(pdf.Red),
template.BgColor(pdf.Yellow),
)
Y con las opciones de tabla/linea:
// Table header
template.TableHeaderStyle(
template.TextColor(pdf.White),
template.BgColor(pdf.RGBHex(0x1A237E)),
)
// Line color
template.LineColor(pdf.Blue)
Espacios de color
type ColorSpace int
const (
ColorSpaceRGB ColorSpace = iota
ColorSpaceGray
ColorSpaceCMYK
)
Tipo Color
type Color struct {
R, G, B float64 // RGB components (0.0 – 1.0)
A float64 // Alpha or K (for CMYK)
Space ColorSpace
}
Writer (Avanzado)
El Writer de PDF maneja la creacion de objetos PDF de bajo nivel. La mayoria de los usuarios no necesitaran esto directamente.
type Writer struct {}
func NewWriter(w io.Writer) *Writer
func (pw *Writer) AllocObject() ObjectRef
func (pw *Writer) WriteObject(ref ObjectRef, obj Object) error
func (pw *Writer) RegisterFont(name string, data []byte) error
func (pw *Writer) AddPage(page *PageContent) error
func (pw *Writer) Close() error
func (pw *Writer) SetDocumentInfo(info DocumentInfo)
Objetos PDF (Avanzado)
Tipos de objetos PDF de bajo nivel:
// Scalar types
type Name string
type LiteralString string
type HexString string
type Integer int64
type Real float64
type Boolean bool
type Null struct{}
// Composite types
type Dict map[string]Object
type Array []Object
// Stream (content, images, fonts)
type Stream struct {
Data []byte
Dictionary Dict
}
// Object reference
type ObjectRef struct {
Number int
Generation int
}
Paquete de fuentes (Avanzado)
El subpaquete pdf/font maneja el analisis y subconjunto de fuentes TrueType:
import "github.com/gpdf-dev/gpdf/pdf/font"
// Parse a TrueType font
ttf, err := font.ParseTrueType(data)
// Get font name and metrics
name := ttf.Name()
metrics := ttf.Metrics() // Ascender, Descender, CapHeight, XHeight
// Create a subset with only used glyphs
subset, err := ttf.Subset(runes)
// Measure text width
width := font.MeasureString(ttf, "Hello", 12.0)
// Break text into lines
lines := font.LineBreak(ttf, text, 12.0, maxWidth)
Arquitectura
Layer 3: template ─── Builder API, JSON Schema, Components
│
▼
Layer 2: document ─── Nodes, Box Model, Layout Engine
│
▼
Layer 1: pdf ──────── Writer, Streams, Fonts, Images
│
▼
io.Writer (file, HTTP response, buffer...)
Cada capa depende solo de la capa inferior — nunca hacia arriba.