goodp

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2025 License: GPL-3.0 Imports: 9 Imported by: 0

README

GOODP - Generador de OpenDocument Presentation en Go

GOODP es una biblioteca en Go para crear presentaciones en formato OpenDocument (.odp) de manera programática. Permite crear diapositivas, añadir texto, imágenes y establecer fondos personalizados.

Instalación

go get github.com/juaismar/goodp

Características

  • Creación de presentaciones en formato ODP
  • Soporte para diferentes relaciones de aspecto (16:9, 4:3)
  • Añadir texto con estilos personalizados
  • Insertar imágenes
  • Establecer fondos (imágenes o colores sólidos)
  • Personalización de tamaños de diapositiva

Uso Básico

package main

import (
    "log"
    "os"
    "goodp"
)

func main() {
    // Crear una nueva presentación (por defecto 16:9)
    presentacion := goodp.New()

    // Añadir una diapositiva con título
    presentacion.AddSlide("Mi Primera Presentación", "Contenido de ejemplo")

    // Guardar la presentación
    if err := presentacion.Save("mi_presentacion.odp"); err != nil {
        log.Fatal(err)
    }
}

Ejemplos de Uso

Configurar el Tamaño de la Presentación
// Usar relación de aspecto 16:9 (por defecto)
presentacion.SetSlideSize(goodp.AspectRatio169)

// Usar relación de aspecto 4:3
presentacion.SetSlideSize(goodp.AspectRatio43)

// O establecer un tamaño personalizado (en centímetros)
presentacion.SetCustomSlideSize(25.4, 19.05)
Añadir Texto con Estilo
// Obtener referencia a la diapositiva
slide := presentacion.AddBlankSlide()

// Establecer estilo de texto (tamaño, fuente, color, negrita, cursiva)
presentacion.SetTextStyle(slide, 24, "Arial", "#FF0000", true, false)

// Añadir cuadro de texto (slide, contenido, x, y, ancho, alto en cm)
presentacion.AddTextBox(slide, "Texto con estilo", 2, 2, 10, 2)
Insertar Imágenes
// Leer imagen
imageData, err := os.ReadFile("imagen.png")
if err != nil {
    log.Fatal(err)
}

// Obtener referencia a la diapositiva
slide := presentacion.AddBlankSlide()

// Añadir imagen (slide, datos, extensión, x, y, ancho, alto en cm)
if err := presentacion.AddImage(slide, imageData, ".png", 15, 5, 10, 8); err != nil {
    log.Fatal(err)
}
Establecer Fondos
// Establecer fondo de color para toda la presentación
presentacion.SetBackgroundColor("#FF0000")

// O establecer una imagen de fondo global
imageData, err := os.ReadFile("fondo.jpg")
if err != nil {
    log.Fatal(err)
}
if err := presentacion.SetBackgroundImage(imageData, ".jpg"); err != nil {
    log.Fatal(err)
}

// Establecer fondo solo para una diapositiva específica
slide := presentacion.AddBlankSlide()
if err := presentacion.SetSlideBackground(slide, imageData, ".jpg"); err != nil {
    log.Fatal(err)
}

// O un color de fondo específico para una diapositiva
if err := presentacion.SetSlideBackgroundColor(slide, "#0000FF"); err != nil {
    log.Fatal(err)
}

Ejemplo Completo

Puedes encontrar un ejemplo completo en el archivo ejemplo_uso.go.

Limitaciones

  • Solo soporta formatos de imagen comunes (PNG, JPEG, etc.)
  • No soporta animaciones ni transiciones
  • No soporta edición de presentaciones existentes

Contribuir

Las contribuciones son bienvenidas. Por favor, abre un issue para discutir los cambios que te gustaría hacer.

Licencia

MIT

Documentation

Index

Constants

View Source
const (
	AspectRatio169 = "16:9"
	AspectRatio43  = "4:3"
)

TODO Refactor this to use a list of sizes and override with a custom size Constantes para los tipos de diapositivas comunes

Variables

This section is empty.

Functions

This section is empty.

Types

type Background

type Background struct {
	Type  BackgroundType
	Data  []byte // Para imágenes
	Name  string // Para imágenes
	Color string // Para colores sólidos
}

type BackgroundType

type BackgroundType int

Modificar la estructura BackgroundImage para soportar diferentes tipos de fondo

const (
	BackgroundImage BackgroundType = iota
	BackgroundColor
)

type DrawableElement added in v0.0.8

type DrawableElement struct {
	Type   string // "textbox" o "image"
	ZIndex int
	Data   interface{} // TextBox o Image
}

Añadir esta nueva estructura para manejar elementos ordenables

type Image

type Image struct {
	Data   []byte // Cambiamos Path por Data para almacenar los bytes de la imagen
	X      string
	Y      string
	Width  string
	Height string
	Name   string
	ZIndex int
}

type ODPGenerator

type ODPGenerator struct {
	Slides     []Slide
	SlideSize  SlideSize
	Background *Background
}

func New

func New() *ODPGenerator

New crea una nueva instancia de ODPGenerator con tamaño 16:9 por defecto

func (*ODPGenerator) AddBlankSlide

func (g *ODPGenerator) AddBlankSlide() *Slide

AddBlankSlide añade una diapositiva en blanco a la presentación y devuelve un puntero a ella

func (*ODPGenerator) AddImage

func (g *ODPGenerator) AddImage(slide *Slide, imageData []byte, extension string, x, y, width, height float64, zIndex ...int) error

AddImage añade una imagen a la diapositiva especificada. El parámetro extension debe incluir el punto (por ejemplo: ".jpg", ".png")

func (*ODPGenerator) AddSlide

func (g *ODPGenerator) AddSlide(title string, content string) *Slide

AddSlide añade una nueva diapositiva a la presentación y devuelve un puntero a ella

func (*ODPGenerator) AddTextBox

func (g *ODPGenerator) AddTextBox(slide *Slide, content string, x, y, width, height float64, props *TextProperties, zIndex ...int)

Modificar AddTextBox para inicializar props si es nil

func (*ODPGenerator) Save

func (g *ODPGenerator) Save(filename string) error

Modificar Save para usar SaveStream

func (*ODPGenerator) SaveStream

func (g *ODPGenerator) SaveStream() ([]byte, error)

SaveStream genera y devuelve los bytes del archivo ODP

func (*ODPGenerator) SetBackgroundColor

func (g *ODPGenerator) SetBackgroundColor(color string)

SetBackgroundColor establece un fondo de color para la presentación

func (*ODPGenerator) SetBackgroundImage

func (g *ODPGenerator) SetBackgroundImage(imageData []byte, extension string) error

SetBackgroundImage establece una imagen de fondo para todas las diapositivas

func (*ODPGenerator) SetCustomSlideSize

func (g *ODPGenerator) SetCustomSlideSize(width, height float64)

SetCustomSlideSize establece un tamaño personalizado para las diapositivas

func (*ODPGenerator) SetSlideBackground

func (g *ODPGenerator) SetSlideBackground(slide *Slide, imageData []byte, extension string) error

SetSlideBackground establece una imagen de fondo para la diapositiva especificada. El parámetro extension debe incluir el punto (por ejemplo: ".jpg", ".png")

func (*ODPGenerator) SetSlideBackgroundColor

func (g *ODPGenerator) SetSlideBackgroundColor(slide *Slide, color string) error

SetSlideBackgroundColor establece un color de fondo para la diapositiva especificada. El color debe estar en formato hexadecimal (#RRGGBB) o ser un nombre de color válido.

func (*ODPGenerator) SetSlideSize

func (g *ODPGenerator) SetSlideSize(aspectRatio string)

SetSlideSize establece el tamaño de las diapositivas

func (*ODPGenerator) SetTextStyle

func (g *ODPGenerator) SetTextStyle(slide *Slide, fontSize float64, fontFamily, color string, bold, italic bool)

SetTextStyle establece el estilo para el próximo texto que se añada

type Slide

type Slide struct {
	TextBoxes []TextBox
	Images    []Image

	Background *Background
	// contains filtered or unexported fields
}

func (*Slide) SortedElements added in v0.0.8

func (s *Slide) SortedElements() []DrawableElement

Añadir este método a la estructura Slide

type SlideSize

type SlideSize struct {
	Width  float64
	Height float64
}

SlideSize representa las dimensiones de la diapositiva

type TextBox

type TextBox struct {
	Content string
	X       string // Posición X en cm
	Y       string // Posición Y en cm
	Width   string // Ancho en cm
	Height  string // Alto en cm
	Style   TextStyle
	Props   *TextProperties // Cambiado a puntero para que sea opcional
	ZIndex  int
}

type TextProperties added in v0.0.4

type TextProperties struct {
	HorizontalAlign string  // "left", "center", "right", "justify"
	VerticalAlign   string  // "top", "middle", "bottom"
	LeftIndent      float64 // Sangría izquierda en cm
	RightIndent     float64 // Sangría derecha en cm
	FirstLineIndent float64 // Sangría de primera línea en cm
}

func NewDefaultTextProperties added in v0.1.2

func NewDefaultTextProperties() *TextProperties

Añadir esta función para crear TextProperties con valores por defecto

type TextStyle

type TextStyle struct {
	FontSize   string
	FontFamily string
	Color      string
	Bold       bool
	Italic     bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL