Skip to content

Implementar funcionalidad AutoHt para páginas de altura automática #6

@cdvelop

Description

@cdvelop

Descripción

Implementar la funcionalidad para el campo AutoHt en el tipo PageSize que permite que las páginas crezcan automáticamente según su contenido.

Casos de uso

  • Papel de impresora térmica: Las impresoras térmicas (tickets, recibos) necesitan que el papel se extienda según el contenido sin una altura fija predefinida.
  • Reportes dinámicos: Documentos donde el contenido puede variar significativamente y se necesita ajuste automático de altura.
  • Facturas y recibos: Documentos con número variable de elementos que requieren altura dinámica.

Funcionalidad propuesta

Campo AutoHt

type PageSize struct {
    Wd, Ht float64
    AutoHt bool // Cuando es true, la altura se ajusta automáticamente según el contenido
}

Comportamiento esperado

  1. Cuando AutoHt = false: Comportamiento actual (altura fija)
  2. Cuando AutoHt = true:
    • La altura inicial Ht actúa como altura mínima
    • La página crece automáticamente cuando el contenido excede la altura actual
    • No hay saltos de página automáticos
    • La altura final se determina cuando se completa el contenido

Métodos a implementar/modificar

Nuevos métodos para PageSize

// SetAutoHeight habilita/deshabilita el crecimiento automático
func (ps *PageSize) SetAutoHeight(auto bool) PageSize

// IsAutoHeight verifica si está habilitado el crecimiento automático  
func (ps PageSize) IsAutoHeight() bool

// GetMinHeight obtiene la altura mínima (valor inicial de Ht)
func (ps PageSize) GetMinHeight() float64

Métodos existentes a modificar

  • AddPage(): Detectar y manejar páginas con AutoHt
  • AddPageFormat(): Soporte completo para PageSize con AutoHt
  • beginpage(): Inicialización especial para páginas auto-height
  • Cell(), MultiCell(), Write(): Verificar y ajustar altura según sea necesario

Prioridad

Media - Funcionalidad útil pero no crítica para operación básica

Estimación

  • Fase 1: 1-2 días (Infraestructura básica)
  • Fase 2: 2-3 días (Integración con métodos de contenido)
  • Fase 3: 1-2 días (Optimización y testing)
  • Total: 4-7 días de desarrollo

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions