pptx

package
v0.0.0-...-a0d884f Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口 作为人类开发者和 AI 调用的绝对入口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口

Package pptx 提供 PPTX 文件的高级操作接口 作为人类开发者和 AI 调用的绝对入口

Index

Constants

View Source
const (
	// AlphaOpaque 完全不透明
	AlphaOpaque = 100000
	// AlphaTransparent 完全透明
	AlphaTransparent = 0
	// AlphaDefault 默认透明度(100%)
	AlphaDefault = 100000
)

Alpha 常量(OOXML 范围:0-100000)

View Source
const (
	// 背景色
	SchemeBg1 = "bg1" // 背景色 1 (通常是白色或浅色)
	SchemeBg2 = "bg2" // 背景色 2
	SchemeFg1 = "fg1" // 前景色/文本色 1 (通常是黑色或深色)
	SchemeFg2 = "fg2" // 前景色/文本色 2

	// 强调色
	SchemeAccent1 = "accent1" // 强调色 1
	SchemeAccent2 = "accent2" // 强调色 2
	SchemeAccent3 = "accent3" // 强调色 3
	SchemeAccent4 = "accent4" // 强调色 4
	SchemeAccent5 = "accent5" // 强调色 5
	SchemeAccent6 = "accent6" // 强调色 6

	// 超链接色
	SchemeHlink    = "hlink"    // 超链接颜色
	SchemeFolHlink = "folHlink" // 已访问超链接颜色

	// 特殊色
	SchemePhClr = "phClr" // 幻灯片标题颜色
	SchemeTx1   = "tx1"   // 文本色 1
	SchemeTx2   = "tx2"   // 文本色 2
)

主题颜色名称常量

View Source
const (
	// EMUsPerPixel 每像素对应的 EMU 数量 (96 DPI)
	// 1 英寸 = 914400 EMU, // 1 英寸 = 96 像素 (96 DPI)
	// 因此 1 px = 914400 / 96 = 9525 EMU
	EMUsPerPixel = 914400 / 96 // = 9525
)

Variables

View Source
var (
	// 基础颜色
	ColorBlack   = RGBColor("000000")
	ColorWhite   = RGBColor("FFFFFF")
	ColorRed     = RGBColor("FF0000")
	ColorGreen   = RGBColor("00FF00")
	ColorBlue    = RGBColor("0000FF")
	ColorYellow  = RGBColor("FFFF00")
	ColorCyan    = RGBColor("00FFFF")
	ColorMagenta = RGBColor("FF00FF")

	// 透明色
	ColorTransparent = Color{Type: ColorTypeRGB, RGB: "000000", Alpha: AlphaTransparent, IsValid: true}

	// 常用 UI 颜色
	ColorGray      = RGBColor("808080")
	ColorLightGray = RGBColor("C0C0C0")
	ColorDarkGray  = RGBColor("404040")
	ColorOrange    = RGBColor("FFA500")
	ColorPurple    = RGBColor("800080")
	ColorPink      = RGBColor("FFC0CB")
	ColorBrown     = RGBColor("A52A2A")
	ColorNavy      = RGBColor("000080")
	ColorTeal      = RGBColor("008080")
	ColorOlive     = RGBColor("808000")
	ColorMaroon    = RGBColor("800000")
	ColorLime      = RGBColor("00FF00")
	ColorAqua      = RGBColor("00FFFF")
	ColorSilver    = RGBColor("C0C0C0")
	ColorGold      = RGBColor("FFD700")
)

预设颜色常量(6位十六进制,无 # 前缀)

View Source
var (
	// SlideSize16x9 宽屏幻灯片尺寸 (16:9)
	// 宽度: 1280 px (13.333 英寸)
	// 高度: 720 px (7.5 英寸)
	SlideSize16x9 = SlideSize{Width: 1280, Height: 720}

	// SlideSize4x3 标准幻灯片尺寸 (4:3)
	// 宽度: 960 px (10 英寸)
	// 高度: 720 px (7.5 英寸)
	SlideSize4x3 = SlideSize{Width: 960, Height: 720}

	// SlideSize16x10 超宽屏幻灯片尺寸 (16:10)
	// 宽度: 1280 px (13.333 英寸)
	// 高度: 800 px (8.333 英寸)
	SlideSize16x10 = SlideSize{Width: 1280, Height: 800}
)

标准幻灯片尺寸变量

主题颜色列表

Functions

func EMUToPx

func EMUToPx(emu int) int

EMUToPx 将 EMU 转换为像素(基于 96 DPI)

func GetEmbeddedDefaultTemplate

func GetEmbeddedDefaultTemplate() (*opc.Package, error)

GetEmbeddedDefaultTemplate 获取嵌入式默认模板

func GetEmbeddedTemplate

func GetEmbeddedTemplate(name TemplateType) (*opc.Package, error)

GetEmbeddedTemplate 获取嵌入式模板(使用全局管理器)

func InitEmbeddedTemplates

func InitEmbeddedTemplates() error

InitEmbeddedTemplates 初始化嵌入式模板

func IsSchemeColor

func IsSchemeColor(name string) bool

IsSchemeColor 检查是否为有效的主题颜色名称

func LoadDefaultTemplate

func LoadDefaultTemplate() (*opc.Package, error)

LoadDefaultTemplate 加载默认模板(使用全局管理器)

func LoadTemplate

func LoadTemplate(name TemplateType) (*opc.Package, error)

LoadTemplate 加载指定模板(使用全局管理器)

func PxToEMU

func PxToEMU(px int) int

PxToEMU 将像素转换为 EMU(基于 96 DPI)

func RegisterTemplate

func RegisterTemplate(name TemplateType, path string) error

RegisterTemplate 注册模板(使用全局管理器)

func RegisterTemplateFromBytes

func RegisterTemplateFromBytes(name TemplateType, data []byte) error

RegisterTemplateFromBytes 从字节数据注册模板(使用全局管理器)

Types

type BoundaryCheckResult

type BoundaryCheckResult struct {
	// Status 边界状态
	Status BoundaryStatus
	// ElementRect 元素矩形 (x, y, cx, cy in px)
	ElementRect Rect
	// ViewportRect 视口矩形 (0, 0, width, height in px)
	ViewportRect Rect
	// OverflowX X 方向越界量 (正数表示越出右边界,负数表示越出左边界)
	OverflowX int
	// OverflowY Y 方向越界量 (正数表示越出下边界,负数表示越出上边界)
	OverflowY int
	// IsVisible 是否有部分可见(至少有部分在视口内)
	IsVisible bool
}

BoundaryCheckResult 边界检查结果

type BoundaryStatus

type BoundaryStatus int

BoundaryStatus 边界状态

const (
	// BoundaryStatusInside 完全在边界内
	BoundaryStatusInside BoundaryStatus = iota
	// BoundaryStatusPartial 部分越界
	BoundaryStatusPartial
	// BoundaryStatusOutside 完全越界
	BoundaryStatusOutside
	// BoundaryStatusOverflowRight 右侧越界
	BoundaryStatusOverflowRight
	// BoundaryStatusOverflowLeft 左侧越界
	BoundaryStatusOverflowLeft
	// BoundaryStatusOverflowTop 顶部越界
	BoundaryStatusOverflowTop
	// BoundaryStatusOverflowBottom 底部越界
	BoundaryStatusOverflowBottom
)

func (BoundaryStatus) String

func (bs BoundaryStatus) String() string

String 返回边界状态的字符串表示

type Color

type Color struct {
	// Type 颜色类型
	Type ColorType
	// RGB 十六进制值 (6位,如 "FF0000",无 # 前缀)
	RGB string
	// Scheme 主题颜色名称 (如 "accent1")
	Scheme string
	// Alpha 透明度 (0-100000,OOXML 标准)
	// 100000 = 100% 不透明,0 = 完全透明
	Alpha int
	// IsValid 是否有效
	IsValid bool
}

Color 颜色结构体

func ColorFromRGB

func ColorFromRGB(r, g, b int) Color

ColorFromRGB 从 RGB 值创建颜色

func ColorFromRGBA

func ColorFromRGBA(r, g, b, alpha int) Color

ColorFromRGBA 从 RGBA 值创建颜色 r, g, b: 0-255 alpha: 0-100000 (OOXML 标准)

func ParseColor

func ParseColor(s string) Color

ParseColor 解析颜色字符串 支持格式: - "#FF0000" 或 "FF0000" (6位十六进制) - "#FF0000FF" (8位十六进制,最后两位为 alpha) - "rgb(255, 0, 0)" (RGB) - "rgba(255, 0, 0, 0.5)" (RGBA,alpha 0-1) - "accent1", "bg1" 等主题颜色名称

func RGBAColor

func RGBAColor(hex string, alpha int) Color

RGBAColor 创建带 alpha 的 RGB 颜色 hex: 6位十六进制 RGB alpha: 0-100000 (OOXML 标准)

func RGBColor

func RGBColor(hex string) Color

RGBColor 创建 RGB 颜色(无 alpha)

func SchemeColor

func SchemeColor(name string) Color

SchemeColor 创建主题颜色

func (Color) AlphaPercent

func (c Color) AlphaPercent() float64

AlphaPercent 返回百分比形式的 alpha (0-100)

func (Color) AlphaValue

func (c Color) AlphaValue() int

AlphaValue 返回 OOXML 格式的 alpha 值 (0-100000) 用于 <a:alpha val="50000"/>

func (Color) RGBComponents

func (c Color) RGBComponents() (r, g, b int, ok bool)

RGBComponents 返回 RGB 分量 (r, g, b)

func (Color) String

func (c Color) String() string

String 返回颜色的字符串表示

func (Color) ToHex

func (c Color) ToHex() string

ToHex 转换为带 # 前缀的 6 位十六进制字符串(用于显示)

func (Color) ToHexA

func (c Color) ToHexA() string

ToHexA 转换为带 # 前缀的 8 位十六进制字符串(包含 alpha)

func (Color) ToRGB

func (c Color) ToRGB() string

ToRGB 转换为 RGB 十六进制字符串(6位,无 # 前缀) 符合 OOXML 规范:<a:srgbClr val="FF0000"/>

func (Color) ToScheme

func (c Color) ToScheme() string

ToScheme 转换为主题颜色名称

func (Color) WithAlpha

func (c Color) WithAlpha(alpha int) Color

WithAlpha 设置透明度并返回新颜色 alpha: 0-100000 (OOXML 标准)

func (Color) WithAlphaPercent

func (c Color) WithAlphaPercent(percent float64) Color

WithAlphaPercent 设置透明度(百分比)并返回新颜色 percent: 0-100

type ColorMap

type ColorMap struct {
	// contains filtered or unexported fields
}

ColorMap 颜色映射表 用于将颜色名称映射到实际颜色值

func DefaultColorMap

func DefaultColorMap() *ColorMap

DefaultColorMap 默认颜色映射表

func NewColorMap

func NewColorMap() *ColorMap

NewColorMap 创建颜色映射表

func (*ColorMap) All

func (cm *ColorMap) All() map[string]Color

All 返回所有颜色映射

func (*ColorMap) Get

func (cm *ColorMap) Get(name string) (Color, bool)

Get 获取颜色映射

func (*ColorMap) Resolve

func (cm *ColorMap) Resolve(s string) Color

Resolve 解析颜色(支持名称、十六进制、RGB、主题色)

func (*ColorMap) Set

func (cm *ColorMap) Set(name string, color Color)

Set 设置颜色映射

type ColorType

type ColorType int

ColorType 颜色类型

const (
	// ColorTypeRGB RGB 颜色
	ColorTypeRGB ColorType = iota
	// ColorTypeScheme 主题颜色
	ColorTypeScheme
	// ColorTypeInvalid 无效颜色
	ColorTypeInvalid
)

type ColorValidationResult

type ColorValidationResult struct {
	// IsValid 是否有效
	IsValid bool
	// Color 解析后的颜色
	Color Color
	// Original 原始输入
	Original string
	// Message 验证消息
	Message string
}

ColorValidationResult 颜色验证结果

func ValidateColor

func ValidateColor(s string) ColorValidationResult

ValidateColor 验证颜色

type Component

type Component interface {
	// Render 将组件渲染到幻灯片
	// ctx: 提供组件所需的上下文和资源访问能力
	// 返回 error 表示渲染失败
	Render(ctx *SlideContext) error
}

Component 组件接口 所有可渲染到幻灯片的积木必须实现此接口

type ComponentList

type ComponentList []Component

ComponentList 组件列表 用于批量管理组件

func (*ComponentList) Add

func (cl *ComponentList) Add(c Component)

Add 添加组件到列表

func (ComponentList) Count

func (cl ComponentList) Count() int

Count 返回组件数量

func (ComponentList) RenderAll

func (cl ComponentList) RenderAll(ctx *SlideContext) error

RenderAll 渲染所有组件

type ComponentRenderError

type ComponentRenderError struct {
	Index      int
	Component  Component
	Underlying error
}

ComponentRenderError 组件渲染错误

func (*ComponentRenderError) Error

func (e *ComponentRenderError) Error() string

Error 实现 error 接口

func (*ComponentRenderError) Unwrap

func (e *ComponentRenderError) Unwrap() error

Unwrap 返回底层错误

type ComponentWithName

type ComponentWithName interface {
	Component
	// Name 返回组件名称(用于调试和日志)
	Name() string
}

ComponentWithName 带名称的组件

type ComponentWithPosition

type ComponentWithPosition interface {
	Component
	// SetPosition 设置组件位置 (EMU 单位)
	SetPosition(x, y int)
	// Position 返回组件位置
	Position() (x, y int)
}

ComponentWithPosition 可定位的组件

type ComponentWithSize

type ComponentWithSize interface {
	Component
	// Bounds 返回组件的边界框 (x, y, cx, cy in EMU)
	Bounds() (x, y, cx, cy int)
}

ComponentWithSize 带尺寸信息的组件

type ComponentWithSizeSetter

type ComponentWithSizeSetter interface {
	Component
	// SetSize 设置组件尺寸 (EMU 单位)
	SetSize(cx, cy int)
	// Size 返回组件尺寸
	Size() (cx, cy int)
}

ComponentWithSizeSetter 可调整尺寸的组件

type CompositeComponent

type CompositeComponent struct {
	// contains filtered or unexported fields
}

CompositeComponent 组合组件 将多个组件组合为一个

func NewCompositeComponent

func NewCompositeComponent(name string, components ...Component) *CompositeComponent

NewCompositeComponent 创建组合组件

func (*CompositeComponent) Add

func (cc *CompositeComponent) Add(c Component)

Add 添加子组件

func (*CompositeComponent) Components

func (cc *CompositeComponent) Components() []Component

Components 返回所有子组件

func (*CompositeComponent) Name

func (cc *CompositeComponent) Name() string

Name 实现 ComponentWithName 接口

func (*CompositeComponent) Render

func (cc *CompositeComponent) Render(ctx *SlideContext) error

Render 实现 Component 接口

type ConditionalComponent

type ConditionalComponent struct {
	// contains filtered or unexported fields
}

ConditionalComponent 条件组件 根据条件决定是否渲染

func NewConditionalComponent

func NewConditionalComponent(condition func() bool, ifComponent, elseComponent Component) *ConditionalComponent

NewConditionalComponent 创建条件组件

func (*ConditionalComponent) Render

func (cc *ConditionalComponent) Render(ctx *SlideContext) error

Render 实现 Component 接口

type DeduplicationStats

type DeduplicationStats struct {
	// 全局媒体数量(实际存储)
	GlobalMediaCount int64

	// 总引用次数(所有幻灯片的引用总和)
	TotalReferences int64

	// 幻灯片数量
	SlideCount int64

	// 节省的存储空间(字节)
	SavedBytes int64

	// 去重率(0.0 - 1.0)
	DeduplicationRate float64
}

DeduplicationStats 去重统计信息

type EmbeddedTemplateManager

type EmbeddedTemplateManager struct {
	// contains filtered or unexported fields
}

EmbeddedTemplateManager 嵌入式模板管理器 使用程序化方式创建模板

func GetEmbeddedTemplateManager

func GetEmbeddedTemplateManager() *EmbeddedTemplateManager

GetEmbeddedTemplateManager 获取全局嵌入式模板管理器

func (*EmbeddedTemplateManager) GetDefaultTemplate

func (etm *EmbeddedTemplateManager) GetDefaultTemplate() (*opc.Package, error)

GetDefaultTemplate 获取默认模板

func (*EmbeddedTemplateManager) GetTemplate

func (etm *EmbeddedTemplateManager) GetTemplate(name TemplateType) (*opc.Package, error)

GetTemplate 获取模板(返回克隆副本)

func (*EmbeddedTemplateManager) HasTemplate

func (etm *EmbeddedTemplateManager) HasTemplate(name TemplateType) bool

HasTemplate 检查模板是否存在

func (*EmbeddedTemplateManager) Init

func (etm *EmbeddedTemplateManager) Init() error

Init 初始化嵌入式模板(仅执行一次)

type FuncComponent

type FuncComponent func(ctx *SlideContext) error

FuncComponent 函数式组件 将普通函数包装为 Component 接口

func (FuncComponent) Render

func (fc FuncComponent) Render(ctx *SlideContext) error

Render 实现 Component 接口

type MasterCache

type MasterCache struct {
	// contains filtered or unexported fields
}

MasterCache 母版/版式只读缓存 初始化后所有字段只读,支持无锁并发访问

func NewMasterCache

func NewMasterCache() *MasterCache

NewMasterCache 创建新的母版缓存实例

func (*MasterCache) AllLayouts

func (c *MasterCache) AllLayouts() map[string]*parts.SlideLayoutData

AllLayouts 返回所有版式(只读)

func (*MasterCache) AllMasters

func (c *MasterCache) AllMasters() map[string]*parts.SlideMasterData

AllMasters 返回所有母版(只读)

func (*MasterCache) GetLayout

func (c *MasterCache) GetLayout(layoutID string) (*parts.SlideLayoutData, bool)

GetLayout 根据 ID 获取版式

func (*MasterCache) GetLayoutByName

func (c *MasterCache) GetLayoutByName(name string) (*parts.SlideLayoutData, bool)

GetLayoutByName 根据名称获取版式

func (*MasterCache) GetMaster

func (c *MasterCache) GetMaster(masterID string) (*parts.SlideMasterData, bool)

GetMaster 根据 ID 获取母版

func (*MasterCache) GetMasterByName

func (c *MasterCache) GetMasterByName(name string) (*parts.SlideMasterData, bool)

GetMasterByName 根据名称获取母版

func (*MasterCache) GetMasterPlaceholder

func (c *MasterCache) GetMasterPlaceholder(masterID, phType string) (*parts.Placeholder, bool)

GetMasterPlaceholder 根据母版 ID 和占位符类型获取占位符

func (*MasterCache) GetPlaceholder

func (c *MasterCache) GetPlaceholder(layoutID, phType string) (*parts.Placeholder, bool)

GetPlaceholder 根据版式 ID 和占位符类型获取占位符 phType 可以是 PlaceholderType.String() 的值,如 "title", "body" 等

func (*MasterCache) GetPlaceholderByID

func (c *MasterCache) GetPlaceholderByID(layoutID, placeholderID string) (*parts.Placeholder, bool)

GetPlaceholderByID 根据版式 ID 和占位符 ID 获取占位符

func (*MasterCache) Init

func (c *MasterCache) Init(masters []*parts.SlideMasterData, layouts []*parts.SlideLayoutData)

Init 使用提供的数据初始化缓存(仅执行一次) 后续调用将被忽略

func (*MasterCache) InitFunc

func (c *MasterCache) InitFunc(initFn func() ([]*parts.SlideMasterData, []*parts.SlideLayoutData))

InitFunc 延迟初始化,接受初始化函数 函数仅在第一次访问时执行

func (*MasterCache) LayoutCount

func (c *MasterCache) LayoutCount() int

LayoutCount 返回版式数量

func (*MasterCache) LayoutExists

func (c *MasterCache) LayoutExists(layoutID string) bool

LayoutExists 检查版式是否存在

func (*MasterCache) ListLayoutIDs

func (c *MasterCache) ListLayoutIDs() []string

ListLayoutIDs 列出所有版式 ID

func (*MasterCache) ListLayoutNames

func (c *MasterCache) ListLayoutNames() []string

ListLayoutNames 列出所有版式名称

func (*MasterCache) ListMasterIDs

func (c *MasterCache) ListMasterIDs() []string

ListMasterIDs 列出所有母版 ID

func (*MasterCache) MasterCount

func (c *MasterCache) MasterCount() int

MasterCount 返回母版数量

func (*MasterCache) MasterExists

func (c *MasterCache) MasterExists(masterID string) bool

MasterExists 检查母版是否存在

type MasterManager

type MasterManager struct {
	// contains filtered or unexported fields
}

MasterManager 母版/版式管理器

func NewMasterManager

func NewMasterManager() *MasterManager

NewMasterManager 创建新的母版管理器

func NewMasterManagerWithCache

func NewMasterManagerWithCache(cache *MasterCache) *MasterManager

NewMasterManagerWithCache 使用指定缓存创建母版管理器

func (*MasterManager) AllLayouts

func (m *MasterManager) AllLayouts() map[string]*parts.SlideLayoutData

AllLayouts 返回所有版式

func (*MasterManager) AllMasters

func (m *MasterManager) AllMasters() map[string]*parts.SlideMasterData

AllMasters 返回所有母版

func (*MasterManager) Cache

func (m *MasterManager) Cache() *MasterCache

Cache 返回内部缓存(只读)

func (*MasterManager) GetLayout

func (m *MasterManager) GetLayout(layoutID string) (*parts.SlideLayoutData, bool)

GetLayout 获取版式

func (*MasterManager) GetLayoutByName

func (m *MasterManager) GetLayoutByName(name string) (*parts.SlideLayoutData, bool)

GetLayoutByName 根据名称获取版式

func (*MasterManager) GetMaster

func (m *MasterManager) GetMaster(masterID string) (*parts.SlideMasterData, bool)

GetMaster 获取母版

func (*MasterManager) GetMasterByName

func (m *MasterManager) GetMasterByName(name string) (*parts.SlideMasterData, bool)

GetMasterByName 根据名称获取母版

func (*MasterManager) GetPlaceholder

func (m *MasterManager) GetPlaceholder(layoutID, phType string) (*parts.Placeholder, bool)

GetPlaceholder 获取占位符

func (*MasterManager) LayoutCount

func (m *MasterManager) LayoutCount() int

LayoutCount 返回版式数量

func (*MasterManager) ListLayoutIDs

func (m *MasterManager) ListLayoutIDs() []string

ListLayoutIDs 列出所有版式 ID

func (*MasterManager) ListLayoutNames

func (m *MasterManager) ListLayoutNames() []string

ListLayoutNames 列出所有版式名称

func (*MasterManager) LoadFromZip

func (m *MasterManager) LoadFromZip(zipReader *zip.Reader) error

LoadFromZip 从 ZIP Reader 加载母版和版式 遍历 ZIP 内的 /ppt/slideMasters/ 和 /ppt/slideLayouts/ 目录

func (*MasterManager) LoadFromZipFile

func (m *MasterManager) LoadFromZipFile(filePath string) error

LoadFromZipFile 从 ZIP 文件路径加载

func (*MasterManager) MasterCount

func (m *MasterManager) MasterCount() int

MasterCount 返回母版数量

type MediaManager

type MediaManager struct {
	// contains filtered or unexported fields
}

MediaManager 媒体资源管理器 维护 PPTX 中所有媒体资源的并发安全缓存

func NewMediaManager

func NewMediaManager() *MediaManager

NewMediaManager 创建新的媒体资源管理器

func (*MediaManager) AddMedia

func (m *MediaManager) AddMedia(resource *parts.MediaResource) string

AddMedia 添加媒体资源到缓存 返回资源的 rID,如果已存在则返回现有 rID

func (*MediaManager) AddMediaAuto

func (m *MediaManager) AddMediaAuto(fileName string, data []byte) (string, *parts.MediaResource)

AddMediaAuto 自动推断 MIME 类型并生成自增 rID 如果相同内容已存在(基于 Hash),则返回已有资源(去重) 返回生成的 rID 和创建的 MediaResource

func (*MediaManager) AddMediaForSlide

func (m *MediaManager) AddMediaForSlide(slideIndex int, data []byte, fileName string) (string, *parts.MediaResource)

AddMediaForSlide 为指定幻灯片添加媒体(支持跨幻灯片去重) 返回该幻灯片的本地 rId 和全局媒体资源

使用示例:

// 第 1 页插入 Logo
rId1, _ := mediaManager.AddMediaForSlide(0, logoData, "logo.png")
// 返回: rId1="rId1", 全局存储 image1.png

// 第 2 页插入同一个 Logo
rId2, _ := mediaManager.AddMediaForSlide(1, logoData, "logo.png")
// 返回: rId2="rId1"(该幻灯片的本地 rId), 复用 image1.png

// 最终 ZIP 包中只有一份 image1.png,但两张幻灯片都有各自的 rId 引用

func (*MediaManager) AddMediaWithBytes

func (m *MediaManager) AddMediaWithBytes(rID, fileName, contentType, target string, data []byte) *parts.MediaResource

AddMediaWithBytes 从字节数据添加媒体资源

func (*MediaManager) AddMediaWithReader

func (m *MediaManager) AddMediaWithReader(rID, fileName, contentType, target string, reader io.Reader, size int64) *parts.MediaResource

AddMediaWithReader 从 Reader 添加媒体资源

func (*MediaManager) AllAudio

func (m *MediaManager) AllAudio() []*parts.MediaResource

AllAudio 返回所有音频资源

func (*MediaManager) AllGlobalMedia

func (m *MediaManager) AllGlobalMedia() []*parts.MediaResource

AllGlobalMedia 返回所有全局媒体资源(去重后的)

func (*MediaManager) AllImages

func (m *MediaManager) AllImages() []*parts.MediaResource

AllImages 返回所有图片资源

func (*MediaManager) AllMedia

func (m *MediaManager) AllMedia() []*parts.MediaResource

AllMedia 返回所有媒体资源(返回新切片,线程安全)

func (*MediaManager) AllMediaByType

func (m *MediaManager) AllMediaByType(mediaType parts.MediaType) []*parts.MediaResource

AllMediaByType 返回指定类型的所有媒体资源

func (*MediaManager) AllVideo

func (m *MediaManager) AllVideo() []*parts.MediaResource

AllVideo 返回所有视频资源

func (*MediaManager) Clear

func (m *MediaManager) Clear()

Clear 清空所有媒体资源

func (*MediaManager) Count

func (m *MediaManager) Count() int64

Count 返回媒体资源总数

func (*MediaManager) CountAudio

func (m *MediaManager) CountAudio() int64

CountAudio 返回音频数量

func (*MediaManager) CountByType

func (m *MediaManager) CountByType(mediaType parts.MediaType) int64

CountByType 返回指定类型的媒体资源数量

func (*MediaManager) CountImages

func (m *MediaManager) CountImages() int64

CountImages 返回图片数量

func (*MediaManager) CountVideo

func (m *MediaManager) CountVideo() int64

CountVideo 返回视频数量

func (*MediaManager) GetDeduplicationStats

func (m *MediaManager) GetDeduplicationStats() DeduplicationStats

GetDeduplicationStats 获取去重统计信息

func (*MediaManager) GetGlobalMediaByHash

func (m *MediaManager) GetGlobalMediaByHash(hash string) *parts.MediaResource

GetGlobalMediaByHash 根据 Hash 获取全局媒体资源

func (*MediaManager) GetMedia

func (m *MediaManager) GetMedia(rID string) *parts.MediaResource

GetMedia 根据 rID 获取媒体资源

func (*MediaManager) GetMediaByFileName

func (m *MediaManager) GetMediaByFileName(fileName string) *parts.MediaResource

GetMediaByFileName 根据文件名获取媒体资源

func (*MediaManager) GetMediaByHash

func (m *MediaManager) GetMediaByHash(hash string) *parts.MediaResource

GetMediaByHash 根据内容 Hash 获取媒体资源(用于去重)

func (*MediaManager) GetMediaByTarget

func (m *MediaManager) GetMediaByTarget(target string) *parts.MediaResource

GetMediaByTarget 根据目标路径获取媒体资源

func (*MediaManager) GetSlideMediaIndex

func (m *MediaManager) GetSlideMediaIndex(slideIndex int) *SlideMediaIndex

GetSlideMediaIndex 获取幻灯片媒体索引

func (*MediaManager) GlobalMediaCount

func (m *MediaManager) GlobalMediaCount() int64

GlobalMediaCount 返回全局媒体资源数量(去重后)

func (*MediaManager) HasMedia

func (m *MediaManager) HasMedia(rID string) bool

HasMedia 检查媒体资源是否存在

func (*MediaManager) HasMediaByFileName

func (m *MediaManager) HasMediaByFileName(fileName string) bool

HasMediaByFileName 检查文件名是否存在

func (*MediaManager) ListFileNames

func (m *MediaManager) ListFileNames() []string

ListFileNames 返回所有文件名

func (*MediaManager) ListRIDs

func (m *MediaManager) ListRIDs() []string

ListRIDs 返回所有 rID

func (*MediaManager) ListTargets

func (m *MediaManager) ListTargets() []string

ListTargets 返回所有目标路径

func (*MediaManager) RemoveMedia

func (m *MediaManager) RemoveMedia(rID string) bool

RemoveMedia 移除媒体资源

func (*MediaManager) SlideCount

func (m *MediaManager) SlideCount() int64

SlideCount 返回引用媒体的幻灯片数量

type Presentation

type Presentation struct {
	// contains filtered or unexported fields
}

Presentation PPTX 演示文稿总控门面

func New

func New() *Presentation

New 创建空白演示文稿 使用默认模板(16:9 宽屏)

func NewFromBytes

func NewFromBytes(data []byte) (*Presentation, error)

NewFromBytes 从字节数据创建演示文稿

func NewFromFile

func NewFromFile(path string) (*Presentation, error)

NewFromFile 从文件创建演示文稿

func NewWithTemplate

func NewWithTemplate(name TemplateType) (*Presentation, error)

NewWithTemplate 从模板创建演示文稿 name: 模板名称(如 TemplateDefault, TemplateBlank 等)

func (*Presentation) AddSlide

func (p *Presentation) AddSlide(layout ...string) *Slide

AddSlide 添加新幻灯片 layout: 可选的布局名称(如 "title", "blank", "titleAndContent" 等) 如果不指定布局,使用空白布局

内部自动: - 向 presentation.xml 的 <p:sldIdLst> 注册新 ID - 向 .rels 申请路由 - 返回高层的 *Slide 对象

func (*Presentation) AddSlideAt

func (p *Presentation) AddSlideAt(index int, layout ...string) (*Slide, error)

AddSlideAt 在指定位置插入幻灯片

func (*Presentation) Clone

func (p *Presentation) Clone() (*Presentation, error)

Clone 克隆演示文稿 返回一个完全独立的副本

func (*Presentation) Close

func (p *Presentation) Close() error

Close 关闭演示文稿,释放资源

func (*Presentation) GetSlide

func (p *Presentation) GetSlide(index int) (*Slide, error)

GetSlide 获取指定索引的幻灯片

func (*Presentation) MasterCache

func (p *Presentation) MasterCache() *MasterCache

MasterCache 返回母版缓存

func (*Presentation) MediaManager

func (p *Presentation) MediaManager() *MediaManager

MediaManager 返回媒体管理器

func (*Presentation) Package

func (p *Presentation) Package() *opc.Package

Package 返回底层 OPC 包(高级用法)

func (*Presentation) PresentationPart

func (p *Presentation) PresentationPart() *parts.PresentationPart

PresentationPart 返回演示文稿部件

func (*Presentation) RemoveSlide

func (p *Presentation) RemoveSlide(index int) error

RemoveSlide 移除指定索引的幻灯片

func (*Presentation) Save

func (p *Presentation) Save(path string) error

Save 将演示文稿保存到文件 触发底层的序列化和 ZIP 打包

func (*Presentation) SetSlideSize

func (p *Presentation) SetSlideSize(cx, cy int)

SetSlideSize 设置幻灯片尺寸

func (*Presentation) SetSlideSizeStandard

func (p *Presentation) SetSlideSizeStandard(name string)

SetSlideSizeStandard 设置标准幻灯片尺寸

func (*Presentation) SlideCount

func (p *Presentation) SlideCount() int

SlideCount 返回幻灯片数量

func (*Presentation) SlideSize

func (p *Presentation) SlideSize() (int, int)

SlideSize 返回当前幻灯片尺寸

func (*Presentation) Slides

func (p *Presentation) Slides() []*Slide

Slides 返回所有幻灯片

func (*Presentation) Write

func (p *Presentation) Write(w io.Writer) error

Write 将演示文稿写入 io.Writer 这是为高并发流式输出(如 HTTP 响应)准备的杀手锏

func (*Presentation) WriteToBytes

func (p *Presentation) WriteToBytes() ([]byte, error)

WriteToBytes 将演示文稿写入字节数组

type Rect

type Rect struct {
	X, Y   int // 左上角坐标 (px)
	Cx, Cy int // 宽度和高度 (px)
}

Rect 矩形区域

type RepeatedComponent

type RepeatedComponent struct {
	// contains filtered or unexported fields
}

RepeatedComponent 重复组件 根据数据切片重复渲染组件

func NewRepeatedComponent

func NewRepeatedComponent(count int, template func(index int) Component) *RepeatedComponent

NewRepeatedComponent 创建重复组件

func (*RepeatedComponent) Render

func (rc *RepeatedComponent) Render(ctx *SlideContext) error

Render 实现 Component 接口

type ShapeComponent

type ShapeComponent struct {
	// contains filtered or unexported fields
}

ShapeComponent 形状组件 最基础的组件类型,直接包装 XSp

func NewShapeComponent

func NewShapeComponent(sp *parts.XSp, x, y int) *ShapeComponent

NewShapeComponent 创建形状组件

func (*ShapeComponent) Bounds

func (sc *ShapeComponent) Bounds() (x, y, cx, cy int)

Bounds 实现 ComponentWithSize 接口

func (*ShapeComponent) Name

func (sc *ShapeComponent) Name() string

Name 实现 ComponentWithName 接口

func (*ShapeComponent) Position

func (sc *ShapeComponent) Position() (x, y int)

Position 实现 ComponentWithPosition 接口

func (*ShapeComponent) Render

func (sc *ShapeComponent) Render(ctx *SlideContext) error

Render 实现 Component 接口

func (*ShapeComponent) SetName

func (sc *ShapeComponent) SetName(name string)

SetName 设置名称

func (*ShapeComponent) SetPosition

func (sc *ShapeComponent) SetPosition(x, y int)

SetPosition 实现 ComponentWithPosition 接口

type Slide

type Slide struct {
	// contains filtered or unexported fields
}

Slide 高层幻灯片对象

func (*Slide) AddAutoShape

func (s *Slide) AddAutoShape(x, y, cx, cy int, presetID string) *parts.XSp

AddAutoShape 添加自动形状 x, y: 位置(px 单位) cx, cy: 尺寸(px 单位) presetID: 预设形状类型(如 "rectangle", "ellipse", "roundRect")

func (*Slide) AddChartRel

func (s *Slide) AddChartRel(targetURI string) string

AddChartRel 添加图表关系

func (*Slide) AddComponent

func (s *Slide) AddComponent(c Component) error

AddComponent 添加组件到幻灯片 接收任何实现了 Component 接口的积木(文本、图片、图表) 内部生成一个 SlideContext,并调用组件的 c.Render(ctx) 方法

func (*Slide) AddComponents

func (s *Slide) AddComponents(components ...Component) error

AddComponents 批量添加组件

func (*Slide) AddEllipse

func (s *Slide) AddEllipse(x, y, cx, cy int) *parts.XSp

AddEllipse 添加椭圆

func (*Slide) AddImageRel

func (s *Slide) AddImageRel(targetURI string) string

AddImageRel 添加图片关系

func (*Slide) AddMediaRel

func (s *Slide) AddMediaRel(targetURI string) string

AddMediaRel 添加媒体关系

func (*Slide) AddPicture

func (s *Slide) AddPicture(x, y, cx, cy int, imageRId string) *parts.XPicture

AddPicture 添加图片 x, y: 位置(px 单位) cx, cy: 尺寸(px 单位) imageRId: 图片关系 ID

func (*Slide) AddPictureFromBytes

func (s *Slide) AddPictureFromBytes(x, y, cx, cy int, fileName string, data []byte) (*parts.XPicture, error)

AddPictureFromBytes 从字节数据添加图片 自动处理媒体资源的添加和关系 ID 分配

func (*Slide) AddPictureFromFile

func (s *Slide) AddPictureFromFile(x, y, cx, cy int, path string) (*parts.XPicture, error)

AddPictureFromFile 从文件添加图片

func (*Slide) AddRectangle

func (s *Slide) AddRectangle(x, y, cx, cy int) *parts.XSp

AddRectangle 添加矩形

func (*Slide) AddRoundRect

func (s *Slide) AddRoundRect(x, y, cx, cy int) *parts.XSp

AddRoundRect 添加圆角矩形

func (*Slide) AddTable

func (s *Slide) AddTable(x, y, cx, cy, rows, cols int) *parts.XGraphicFrame

AddTable 添加表格 x, y: 位置(px 单位) cx, cy: 尺寸(px 单位) rows, cols: 行列数

func (*Slide) AddTextBox

func (s *Slide) AddTextBox(x, y, cx, cy int, text string) *parts.XSp

AddTextBox 添加文本框 x, y: 位置(px 单位) cx, cy: 尺寸(px 单位) text: 文本内容

func (*Slide) Builder

func (s *Slide) Builder() *SlideBuilder

Builder 返回幻灯片构建器

func (*Slide) CheckBoundary

func (s *Slide) CheckBoundary(x, y, cx, cy int) BoundaryCheckResult

CheckBoundary 检查元素边界 x, y: 元素左上角坐标 (px) cx, cy: 元素宽度和高度 (px) 返回边界检查结果,包含越界信息和可见性状态

func (*Slide) GetImageRId

func (s *Slide) GetImageRId(targetURI string) string

GetImageRId 获取图片 rId,不存在则添加

func (*Slide) HasImage

func (s *Slide) HasImage(targetURI string) bool

HasImage 判断是否已存在某图片关系

func (*Slide) Index

func (s *Slide) Index() int

Index 返回幻灯片索引(从 0 开始)

func (*Slide) IsInsideBoundary

func (s *Slide) IsInsideBoundary(x, y, cx, cy int) bool

IsInsideBoundary 检查元素是否完全在边界内

func (*Slide) IsVisible

func (s *Slide) IsVisible(x, y, cx, cy int) bool

IsVisible 检查元素是否有部分可见

func (*Slide) Layout

func (s *Slide) Layout() string

Layout 返回当前布局名称

func (*Slide) NewContext

func (s *Slide) NewContext() *SlideContext

NewContext 创建幻灯片上下文(用于手动组件渲染)

func (*Slide) Part

func (s *Slide) Part() *parts.SlidePart

Part 返回底层 SlidePart

func (*Slide) PartURI

func (s *Slide) PartURI() *opc.PackURI

PartURI 返回部件 URI

func (*Slide) ResolveColor

func (s *Slide) ResolveColor(color string) Color

ResolveColor 解析颜色(支持名称、十六进制、RGB、主题色)

func (*Slide) SetLayout

func (s *Slide) SetLayout(layoutName string) bool

SetLayout 设置幻灯片布局 layoutName: 布局名称(如 "blank", "title", "titleAndContent" 等) 返回是否设置成功

func (*Slide) SetTableCellText

func (s *Slide) SetTableCellText(gf *parts.XGraphicFrame, row, col int, text string)

SetTableCellText 设置表格单元格文本

func (*Slide) SlideSize

func (s *Slide) SlideSize() (cx, cy int)

SlideSize 返回幻灯片尺寸(px 单位)

func (*Slide) SlideSizeEMU

func (s *Slide) SlideSizeEMU() (cx, cy int)

SlideSizeEMU 返回幻灯片尺寸(EMU 单位,高级用法)

func (*Slide) ValidateColor

func (s *Slide) ValidateColor(color string) ColorValidationResult

ValidateColor 验证颜色

func (*Slide) Viewport

func (s *Slide) Viewport() *SlideViewport

Viewport 返回幻灯片视口

type SlideBuilder

type SlideBuilder struct {
	// contains filtered or unexported fields
}

SlideBuilder 幻灯片构建器

func NewSlideBuilder

func NewSlideBuilder(slide *parts.SlidePart) *SlideBuilder

NewSlideBuilder 创建幻灯片构建器

func (*SlideBuilder) AddAutoShape

func (b *SlideBuilder) AddAutoShape(x, y, cx, cy int, presetID string) *parts.XSp

AddAutoShape 添加自动形状到幻灯片 x, y, cx, cy: 位置和尺寸(EMU 单位) presetID: 预设形状类型 (如 "rectangle", "ellipse", "roundRect" 等)

func (*SlideBuilder) AddChart

func (b *SlideBuilder) AddChart(targetURI string) string

AddChart 添加图表关系并返回 rId

func (*SlideBuilder) AddImage

func (b *SlideBuilder) AddImage(targetURI string) string

AddImage 添加图片关系并返回 rId

func (*SlideBuilder) AddMedia

func (b *SlideBuilder) AddMedia(targetURI string) string

AddMedia 添加媒体关系并返回 rId

func (*SlideBuilder) AddPicture

func (b *SlideBuilder) AddPicture(x, y, cx, cy int, imageRId string) *parts.XPicture

AddPicture 添加图片到幻灯片 x, y, cx, cy: 位置和尺寸(EMU 单位) imageRId: 图片关系 ID

func (*SlideBuilder) AddTable

func (b *SlideBuilder) AddTable(x, y, cx, cy, rows, cols int) *parts.XGraphicFrame

AddTable 添加表格到幻灯片 x, y, cx, cy: 位置和尺寸(EMU 单位) rows, cols: 行列数

func (*SlideBuilder) AddTextBox

func (b *SlideBuilder) AddTextBox(x, y, cx, cy int, text string) *parts.XSp

AddTextBox 添加文本框到幻灯片 x, y, cx, cy: 位置和尺寸(EMU 单位) text: 文本内容

func (*SlideBuilder) GetChartRId

func (b *SlideBuilder) GetChartRId(targetURI string) string

GetChartRId 获取图表 rId,不存在则添加

func (*SlideBuilder) GetImageRId

func (b *SlideBuilder) GetImageRId(targetURI string) string

GetImageRId 获取图片 rId,不存在则添加

func (*SlideBuilder) GetMediaRId

func (b *SlideBuilder) GetMediaRId(targetURI string) string

GetMediaRId 获取媒体 rId,不存在则添加

func (*SlideBuilder) GetOrAddPicture

func (b *SlideBuilder) GetOrAddPicture(x, y, cx, cy int, imageURI string) *parts.XPicture

GetOrAddPicture 添加图片到幻灯片并返回 XPicture 自动处理图片关系 ID

func (*SlideBuilder) GetRelationshipURI

func (b *SlideBuilder) GetRelationshipURI(rId string) string

GetRelationshipURI 根据 rId 获取目标 URI

func (*SlideBuilder) HasImage

func (b *SlideBuilder) HasImage(targetURI string) bool

HasImage 判断是否已存在某图片关系

func (*SlideBuilder) HasMedia

func (b *SlideBuilder) HasMedia(targetURI string) bool

HasMedia 判断是否已存在某媒体关系

func (*SlideBuilder) SetTableCellText

func (b *SlideBuilder) SetTableCellText(gf *parts.XGraphicFrame, row, col int, text string)

SetTableCellText 设置表格单元格文本

func (*SlideBuilder) Slide

func (b *SlideBuilder) Slide() *parts.SlidePart

Slide 返回底层 SlidePart

type SlideContext

type SlideContext struct {
	// contains filtered or unexported fields
}

SlideContext 幻灯片渲染上下文 提供组件渲染所需的资源和能力

func NewSlideContext

func NewSlideContext(s *Slide) *SlideContext

NewSlideContext 创建幻灯片上下文

func (*SlideContext) AddAudio

func (ctx *SlideContext) AddAudio(data []byte, fileName string) (string, error)

AddAudio 添加音频资源

func (*SlideContext) AddChart

func (ctx *SlideContext) AddChart(chartType parts.ChartType, data map[string]interface{}) (string, error)

AddChart 添加图表(使用模板) chartType: 图表类型 data: 图表数据 返回: 关系 ID 和错误

func (*SlideContext) AddChartRel

func (ctx *SlideContext) AddChartRel(targetURI string) string

AddChartRel 添加图表关系

func (*SlideContext) AddChartXML

func (ctx *SlideContext) AddChartXML(chartXML []byte) (string, error)

AddChartXML 添加图表 XML chartXML: 图表 XML 数据 返回: 关系 ID 和错误

这是路线 C 的实现:组件塞入图表 XML,Context 负责写入底层的 ChartPart 并返回 rId

func (*SlideContext) AddImage

func (ctx *SlideContext) AddImage(data []byte, fileName string) (string, error)

AddImage 添加图片资源(AddMedia 的别名,语义更清晰)

func (*SlideContext) AddImageRel

func (ctx *SlideContext) AddImageRel(targetURI string) string

AddImageRel 添加图片关系

func (*SlideContext) AddMedia

func (ctx *SlideContext) AddMedia(data []byte, fileName string) (string, error)

AddMedia 添加媒体资源(图片、音频、视频) data: 媒体数据 fileName: 文件名(用于推断 MIME 类型) 返回: 关系 ID 和错误

func (*SlideContext) AddMediaRel

func (ctx *SlideContext) AddMediaRel(targetURI string) string

AddMediaRel 添加媒体关系

func (*SlideContext) AddMediaWithMIME

func (ctx *SlideContext) AddMediaWithMIME(data []byte, fileName, mimeType string) (string, error)

AddMediaWithMIME 添加媒体资源(指定 MIME 类型)

func (*SlideContext) AddVideo

func (ctx *SlideContext) AddVideo(data []byte, fileName string) (string, error)

AddVideo 添加视频资源

func (*SlideContext) AllocateShapeIDBatch

func (ctx *SlideContext) AllocateShapeIDBatch(count int) []uint32

AllocateShapeIDBatch 批量分配形状 ID

func (*SlideContext) AppendShape

func (ctx *SlideContext) AppendShape(shape interface{})

AppendShape 将形状追加到幻灯片 shape: 形状结构体(*parts.XSp, *parts.XPicture, *parts.XGraphicFrame 等)

func (*SlideContext) AppendShapes

func (ctx *SlideContext) AppendShapes(shapes ...interface{})

AppendShapes 批量追加形状

func (*SlideContext) CurrentShapeID

func (ctx *SlideContext) CurrentShapeID() uint32

CurrentShapeID 返回当前形状 ID(最后分配的)

func (*SlideContext) EMUToPx

func (ctx *SlideContext) EMUToPx(emu int) int

EMUToPx 将 EMU 转换为像素(基于 96 DPI)

func (*SlideContext) HasRelationship

func (ctx *SlideContext) HasRelationship(rID string) bool

HasRelationship 检查关系是否存在

func (*SlideContext) IsShapeIDAllocated

func (ctx *SlideContext) IsShapeIDAllocated(id uint32) bool

IsShapeIDAllocated 检查形状 ID 是否已分配

func (*SlideContext) NextShapeID

func (ctx *SlideContext) NextShapeID() uint32

NextShapeID 分配下一个形状 ID 返回绝对不冲突的形状 ID(线程安全,使用原子操作)

func (*SlideContext) Presentation

func (ctx *SlideContext) Presentation() *Presentation

Presentation 返回所属演示文稿(高级用法)

func (*SlideContext) PxToEMU

func (ctx *SlideContext) PxToEMU(px int) int

PxToEMU 将像素转换为 EMU(基于 96 DPI)

func (*SlideContext) RenderComponents

func (ctx *SlideContext) RenderComponents(components ...Component) error

RenderComponents 批量渲染组件

func (*SlideContext) SlideIndex

func (ctx *SlideContext) SlideIndex() int

SlideIndex 返回幻灯片索引

func (*SlideContext) SlidePart

func (ctx *SlideContext) SlidePart() *parts.SlidePart

SlidePart 返回底层 SlidePart(高级用法)

func (*SlideContext) SlideSize

func (ctx *SlideContext) SlideSize() (cx, cy int)

SlideSize 返回幻灯片尺寸 (cx, cy in EMU)

type SlideMediaIndex

type SlideMediaIndex struct {
	// contains filtered or unexported fields
}

SlideMediaIndex 幻灯片媒体索引 管理单个幻灯片的媒体引用

func NewSlideMediaIndex

func NewSlideMediaIndex(slideIndex int) *SlideMediaIndex

NewSlideMediaIndex 创建幻灯片媒体索引

func (*SlideMediaIndex) AllLocalRIDs

func (smi *SlideMediaIndex) AllLocalRIDs() []string

AllLocalRIDs 返回所有本地 rId

func (*SlideMediaIndex) GetHashByLocalRID

func (smi *SlideMediaIndex) GetHashByLocalRID(localRID string) string

GetHashByLocalRID 根据本地 rId 获取 Hash

func (*SlideMediaIndex) GetLocalRIDByHash

func (smi *SlideMediaIndex) GetLocalRIDByHash(hash string) string

GetLocalRIDByHash 根据 Hash 获取本地 rId

func (*SlideMediaIndex) LocalRefCount

func (smi *SlideMediaIndex) LocalRefCount() int64

LocalRefCount 返回本地引用数量

type SlideSize

type SlideSize struct {
	Width  int // 宽度 (px)
	Height int // 高度 (px)
}

SlideSize A幻灯片尺寸

type SlideViewport

type SlideViewport struct {
	// Width 视口宽度 (px)
	Width int
	// Height 视口高度 (px)
	Height int
	// Size 标准尺寸名称(可选)
	SizeName string
}

SlideViewport 幻灯片视口

func NewSlideViewport

func NewSlideViewport(width, height int) *SlideViewport

NewSlideViewport 创建幻灯片视口

func NewSlideViewportFromSize

func NewSlideViewportFromSize(size SlideSize) *SlideViewport

NewSlideViewportFromSize 从 SlideSize 创建视口

func (*SlideViewport) CheckBoundary

func (vp *SlideViewport) CheckBoundary(x, y, cx, cy int) BoundaryCheckResult

CheckBoundary 检查元素边界 x, y: 元素左上角坐标 (px) cx, cy: 元素宽度和高度 (px)

func (*SlideViewport) CheckRect

func (vp *SlideViewport) CheckRect(rect Rect) BoundaryCheckResult

CheckRect 检查矩形边界

func (*SlideViewport) IsInside

func (vp *SlideViewport) IsInside(x, y, cx, cy int) bool

IsInside 检查元素是否完全在边界内

func (*SlideViewport) IsVisible

func (vp *SlideViewport) IsVisible(x, y, cx, cy int) bool

IsVisible 检查元素是否有部分可见

func (*SlideViewport) Rect

func (vp *SlideViewport) Rect() Rect

Rect 返回视口矩形

type TemplateBuilder

type TemplateBuilder struct {
	// contains filtered or unexported fields
}

TemplateBuilder 模板构建器 用于从零开始创建 PPTX 模板

func NewTemplateBuilder

func NewTemplateBuilder() *TemplateBuilder

NewTemplateBuilder 创建新的模板构建器

func (*TemplateBuilder) Build

func (tb *TemplateBuilder) Build() *opc.Package

Build 构建模板并返回 OPC 包

func (*TemplateBuilder) BuildAndRegister

func (tb *TemplateBuilder) BuildAndRegister(name TemplateType) error

BuildAndRegister 构建模板并注册到全局管理器

func (*TemplateBuilder) Package

func (tb *TemplateBuilder) Package() *opc.Package

Package 返回底层 OPC 包

type TemplateManager

type TemplateManager struct {
	// contains filtered or unexported fields
}

TemplateManager 模板管理器 负责模板的懒加载、缓存和克隆

func NewTemplateManager

func NewTemplateManager() *TemplateManager

NewTemplateManager 创建新的模板管理器

func NewTemplateManagerWithDir

func NewTemplateManagerWithDir(dir string) *TemplateManager

NewTemplateManagerWithDir 创建带模板目录的模板管理器

func (*TemplateManager) ClearCache

func (tm *TemplateManager) ClearCache()

ClearCache 清空模板缓存

func (*TemplateManager) GetMasterCache

func (tm *TemplateManager) GetMasterCache() *MasterCache

GetMasterCache 获取母版缓存

func (*TemplateManager) HasTemplate

func (tm *TemplateManager) HasTemplate(name TemplateType) bool

HasTemplate 检查模板是否已加载

func (*TemplateManager) LoadDefault

func (tm *TemplateManager) LoadDefault() (*opc.Package, error)

LoadDefault 加载默认模板

func (*TemplateManager) LoadTemplate

func (tm *TemplateManager) LoadTemplate(name TemplateType) (*opc.Package, error)

LoadTemplate 加载指定模板 如果模板已缓存,直接返回克隆副本;否则尝试从文件系统加载

func (*TemplateManager) RegisterTemplate

func (tm *TemplateManager) RegisterTemplate(name TemplateType, path string) error

RegisterTemplate 从文件路径注册模板

func (*TemplateManager) RegisterTemplateFromBytes

func (tm *TemplateManager) RegisterTemplateFromBytes(name TemplateType, data []byte) error

RegisterTemplateFromBytes 从字节数据注册模板

func (*TemplateManager) RegisterTemplateFromFS

func (tm *TemplateManager) RegisterTemplateFromFS(fsys fs.FS, name TemplateType, path string) error

RegisterTemplateFromFS 从文件系统注册模板

func (*TemplateManager) SetDefaultTemplate

func (tm *TemplateManager) SetDefaultTemplate(name TemplateType)

SetDefaultTemplate 设置默认模板

func (*TemplateManager) SetTemplateDir

func (tm *TemplateManager) SetTemplateDir(dir string)

SetTemplateDir 设置模板目录

type TemplateType

type TemplateType string

TemplateType 模板类型

const (
	// TemplateBlank 空白模板
	TemplateBlank TemplateType = "blank.pptx"
	// TemplateDefault 默认模板(16:9 宽屏)
	TemplateDefault TemplateType = "default.pptx"
	// TemplateWide 宽屏模板
	TemplateWide TemplateType = "wide.pptx"
	// TemplateStandard 标准模板(4:3)
	TemplateStandard TemplateType = "standard.pptx"
)

Jump to

Keyboard shortcuts

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