Referencia API
Modelo de documento
Referencia de API para la capa del modelo de documento (Capa 2)
Descripcion general
El paquete document (Capa 2) proporciona tipos para tamanos de pagina, unidades, estilos y el arbol de nodos del documento. La mayoria de los usuarios interactuan con estos tipos para configuracion en lugar de manipulacion directa del arbol.
import "github.com/gpdf-dev/gpdf/document"
Tamanos de pagina
var (
A4 = Size{Width: 595.28, Height: 841.89} // 210mm x 297mm
A3 = Size{Width: 841.89, Height: 1190.55} // 297mm x 420mm
Letter = Size{Width: 612, Height: 792} // 8.5" x 11"
Legal = Size{Width: 612, Height: 1008} // 8.5" x 14"
)
Size
type Size struct {
Width, Height float64 // in points (1pt = 1/72 inch)
}
Unidades y valores
Value
Una dimension con una unidad:
type Value struct {
Amount float64
Unit Unit
}
Constructores de unidades
| Funcion | Unidad | Ejemplo |
|---|---|---|
Pt(v) | Puntos (1/72 pulgada) | Pt(12) — unidad nativa de PDF |
Mm(v) | Milimetros | Mm(20) — margen de 20mm |
Cm(v) | Centimetros | Cm(2.5) — 2.5cm |
In(v) | Pulgadas | In(1) — 1 pulgada |
Em(v) | Relativo al tamano de fuente | Em(2) — 2x tamano de fuente |
Pct(v) | Porcentaje del padre | Pct(50) — 50% |
// Usage examples
document.Mm(20) // 20 millimeters
document.Pt(12) // 12 points
document.In(0.5) // half inch
document.Pct(50) // 50% of parent
Metodos de Value
func (v Value) Resolve(parentSize, fontSize float64) float64
func (v Value) IsAuto() bool
Resolve() convierte cualquier unidad a puntos. IsAuto() verifica valores de tamano automatico.
Bordes (Modelo de caja)
Edges
type Edges struct {
Top, Right, Bottom, Left Value
}
UniformEdges
func UniformEdges(v Value) Edges
Crea bordes con el mismo valor en todos los lados:
document.UniformEdges(document.Mm(20)) // 20mm on all sides
Bordes personalizados
document.Edges{
Top: document.Mm(25),
Right: document.Mm(15),
Bottom: document.Mm(25),
Left: document.Mm(15),
}
Estilo
La estructura Style controla todas las propiedades visuales:
type Style struct {
// Font
FontFamily string
FontSize float64
FontWeight FontWeight // WeightNormal (400) or WeightBold (700)
FontStyle FontStyle // StyleNormal or StyleItalic
// Color
Color pdf.Color
Background *pdf.Color
// Text layout
TextAlign TextAlign // AlignLeft, AlignCenter, AlignRight, AlignJustify
LineHeight float64
LetterSpacing float64
TextIndent Value
TextDecoration TextDecoration
VerticalAlign VerticalAlign
// Box model
Margin Edges
Padding Edges
Border BorderEdges
}
TextAlign
const (
AlignLeft TextAlign = iota // default
AlignCenter
AlignRight
AlignJustify
)
FontWeight
const (
WeightNormal FontWeight = 400
WeightBold FontWeight = 700
)
TextDecoration
const (
DecorationNone TextDecoration = 0
DecorationUnderline TextDecoration = 1
DecorationStrikethrough TextDecoration = 2
DecorationOverline TextDecoration = 4
)
Las decoraciones se pueden combinar con OR a nivel de bits.
VerticalAlign
const (
VAlignTop VerticalAlign = iota // default
VAlignMiddle
VAlignBottom
)
Se usa para la alineacion vertical de celdas de tabla:
template.TableCellVAlign(document.VAlignMiddle)
Metadatos del documento
type DocumentMetadata struct {
Title string
Author string
Subject string
Creator string
Producer string
}
template.WithMetadata(document.DocumentMetadata{
Title: "Quarterly Report",
Author: "ACME Corp",
})
Tipos de imagen
ImageFitMode
const (
FitContain ImageFitMode = iota // Scale to fit within bounds (preserve ratio)
FitCover // Scale to fill bounds (may crop)
FitStretch // Stretch to fill (distort)
FitOriginal // Use original image dimensions
)
ImageFormat
const (
ImageFormatJPEG ImageFormat = iota
ImageFormatPNG
)
Tipos de nodo
El arbol del documento esta compuesto por nodos:
const (
NodeDocument NodeType = iota
NodePage
NodeBox
NodeText
NodeImage
NodeTable
NodeList
NodeRichText
)
La mayoria de los usuarios no interactuan con los nodos directamente — el constructor de templates los crea automaticamente.
Tipos geometricos
type Rectangle struct {
X, Y, Width, Height float64
}
type Point struct {
X, Y float64
}