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
- Variables
- func EMUToPx(emu int) int
- func GetEmbeddedDefaultTemplate() (*opc.Package, error)
- func GetEmbeddedTemplate(name TemplateType) (*opc.Package, error)
- func InitEmbeddedTemplates() error
- func IsSchemeColor(name string) bool
- func LoadDefaultTemplate() (*opc.Package, error)
- func LoadTemplate(name TemplateType) (*opc.Package, error)
- func PxToEMU(px int) int
- func RegisterTemplate(name TemplateType, path string) error
- func RegisterTemplateFromBytes(name TemplateType, data []byte) error
- type BoundaryCheckResult
- type BoundaryStatus
- type Color
- func (c Color) AlphaPercent() float64
- func (c Color) AlphaValue() int
- func (c Color) RGBComponents() (r, g, b int, ok bool)
- func (c Color) String() string
- func (c Color) ToHex() string
- func (c Color) ToHexA() string
- func (c Color) ToRGB() string
- func (c Color) ToScheme() string
- func (c Color) WithAlpha(alpha int) Color
- func (c Color) WithAlphaPercent(percent float64) Color
- type ColorMap
- type ColorType
- type ColorValidationResult
- type Component
- type ComponentList
- type ComponentRenderError
- type ComponentWithName
- type ComponentWithPosition
- type ComponentWithSize
- type ComponentWithSizeSetter
- type CompositeComponent
- type ConditionalComponent
- type DeduplicationStats
- type EmbeddedTemplateManager
- type FuncComponent
- type MasterCache
- func (c *MasterCache) AllLayouts() map[string]*parts.SlideLayoutData
- func (c *MasterCache) AllMasters() map[string]*parts.SlideMasterData
- func (c *MasterCache) GetLayout(layoutID string) (*parts.SlideLayoutData, bool)
- func (c *MasterCache) GetLayoutByName(name string) (*parts.SlideLayoutData, bool)
- func (c *MasterCache) GetMaster(masterID string) (*parts.SlideMasterData, bool)
- func (c *MasterCache) GetMasterByName(name string) (*parts.SlideMasterData, bool)
- func (c *MasterCache) GetMasterPlaceholder(masterID, phType string) (*parts.Placeholder, bool)
- func (c *MasterCache) GetPlaceholder(layoutID, phType string) (*parts.Placeholder, bool)
- func (c *MasterCache) GetPlaceholderByID(layoutID, placeholderID string) (*parts.Placeholder, bool)
- func (c *MasterCache) Init(masters []*parts.SlideMasterData, layouts []*parts.SlideLayoutData)
- func (c *MasterCache) InitFunc(initFn func() ([]*parts.SlideMasterData, []*parts.SlideLayoutData))
- func (c *MasterCache) LayoutCount() int
- func (c *MasterCache) LayoutExists(layoutID string) bool
- func (c *MasterCache) ListLayoutIDs() []string
- func (c *MasterCache) ListLayoutNames() []string
- func (c *MasterCache) ListMasterIDs() []string
- func (c *MasterCache) MasterCount() int
- func (c *MasterCache) MasterExists(masterID string) bool
- type MasterManager
- func (m *MasterManager) AllLayouts() map[string]*parts.SlideLayoutData
- func (m *MasterManager) AllMasters() map[string]*parts.SlideMasterData
- func (m *MasterManager) Cache() *MasterCache
- func (m *MasterManager) GetLayout(layoutID string) (*parts.SlideLayoutData, bool)
- func (m *MasterManager) GetLayoutByName(name string) (*parts.SlideLayoutData, bool)
- func (m *MasterManager) GetMaster(masterID string) (*parts.SlideMasterData, bool)
- func (m *MasterManager) GetMasterByName(name string) (*parts.SlideMasterData, bool)
- func (m *MasterManager) GetPlaceholder(layoutID, phType string) (*parts.Placeholder, bool)
- func (m *MasterManager) LayoutCount() int
- func (m *MasterManager) ListLayoutIDs() []string
- func (m *MasterManager) ListLayoutNames() []string
- func (m *MasterManager) LoadFromZip(zipReader *zip.Reader) error
- func (m *MasterManager) LoadFromZipFile(filePath string) error
- func (m *MasterManager) MasterCount() int
- type MediaManager
- func (m *MediaManager) AddMedia(resource *parts.MediaResource) string
- func (m *MediaManager) AddMediaAuto(fileName string, data []byte) (string, *parts.MediaResource)
- func (m *MediaManager) AddMediaForSlide(slideIndex int, data []byte, fileName string) (string, *parts.MediaResource)
- func (m *MediaManager) AddMediaWithBytes(rID, fileName, contentType, target string, data []byte) *parts.MediaResource
- func (m *MediaManager) AddMediaWithReader(rID, fileName, contentType, target string, reader io.Reader, size int64) *parts.MediaResource
- func (m *MediaManager) AllAudio() []*parts.MediaResource
- func (m *MediaManager) AllGlobalMedia() []*parts.MediaResource
- func (m *MediaManager) AllImages() []*parts.MediaResource
- func (m *MediaManager) AllMedia() []*parts.MediaResource
- func (m *MediaManager) AllMediaByType(mediaType parts.MediaType) []*parts.MediaResource
- func (m *MediaManager) AllVideo() []*parts.MediaResource
- func (m *MediaManager) Clear()
- func (m *MediaManager) Count() int64
- func (m *MediaManager) CountAudio() int64
- func (m *MediaManager) CountByType(mediaType parts.MediaType) int64
- func (m *MediaManager) CountImages() int64
- func (m *MediaManager) CountVideo() int64
- func (m *MediaManager) GetDeduplicationStats() DeduplicationStats
- func (m *MediaManager) GetGlobalMediaByHash(hash string) *parts.MediaResource
- func (m *MediaManager) GetMedia(rID string) *parts.MediaResource
- func (m *MediaManager) GetMediaByFileName(fileName string) *parts.MediaResource
- func (m *MediaManager) GetMediaByHash(hash string) *parts.MediaResource
- func (m *MediaManager) GetMediaByTarget(target string) *parts.MediaResource
- func (m *MediaManager) GetSlideMediaIndex(slideIndex int) *SlideMediaIndex
- func (m *MediaManager) GlobalMediaCount() int64
- func (m *MediaManager) HasMedia(rID string) bool
- func (m *MediaManager) HasMediaByFileName(fileName string) bool
- func (m *MediaManager) ListFileNames() []string
- func (m *MediaManager) ListRIDs() []string
- func (m *MediaManager) ListTargets() []string
- func (m *MediaManager) RemoveMedia(rID string) bool
- func (m *MediaManager) SlideCount() int64
- type Presentation
- func (p *Presentation) AddSlide(layout ...string) *Slide
- func (p *Presentation) AddSlideAt(index int, layout ...string) (*Slide, error)
- func (p *Presentation) Clone() (*Presentation, error)
- func (p *Presentation) Close() error
- func (p *Presentation) GetSlide(index int) (*Slide, error)
- func (p *Presentation) MasterCache() *MasterCache
- func (p *Presentation) MediaManager() *MediaManager
- func (p *Presentation) Package() *opc.Package
- func (p *Presentation) PresentationPart() *parts.PresentationPart
- func (p *Presentation) RemoveSlide(index int) error
- func (p *Presentation) Save(path string) error
- func (p *Presentation) SetSlideSize(cx, cy int)
- func (p *Presentation) SetSlideSizeStandard(name string)
- func (p *Presentation) SlideCount() int
- func (p *Presentation) SlideSize() (int, int)
- func (p *Presentation) Slides() []*Slide
- func (p *Presentation) Write(w io.Writer) error
- func (p *Presentation) WriteToBytes() ([]byte, error)
- type Rect
- type RepeatedComponent
- type ShapeComponent
- type Slide
- func (s *Slide) AddAutoShape(x, y, cx, cy int, presetID string) *parts.XSp
- func (s *Slide) AddChartRel(targetURI string) string
- func (s *Slide) AddComponent(c Component) error
- func (s *Slide) AddComponents(components ...Component) error
- func (s *Slide) AddEllipse(x, y, cx, cy int) *parts.XSp
- func (s *Slide) AddImageRel(targetURI string) string
- func (s *Slide) AddMediaRel(targetURI string) string
- func (s *Slide) AddPicture(x, y, cx, cy int, imageRId string) *parts.XPicture
- func (s *Slide) AddPictureFromBytes(x, y, cx, cy int, fileName string, data []byte) (*parts.XPicture, error)
- func (s *Slide) AddPictureFromFile(x, y, cx, cy int, path string) (*parts.XPicture, error)
- func (s *Slide) AddRectangle(x, y, cx, cy int) *parts.XSp
- func (s *Slide) AddRoundRect(x, y, cx, cy int) *parts.XSp
- func (s *Slide) AddTable(x, y, cx, cy, rows, cols int) *parts.XGraphicFrame
- func (s *Slide) AddTextBox(x, y, cx, cy int, text string) *parts.XSp
- func (s *Slide) Builder() *SlideBuilder
- func (s *Slide) CheckBoundary(x, y, cx, cy int) BoundaryCheckResult
- func (s *Slide) GetImageRId(targetURI string) string
- func (s *Slide) HasImage(targetURI string) bool
- func (s *Slide) Index() int
- func (s *Slide) IsInsideBoundary(x, y, cx, cy int) bool
- func (s *Slide) IsVisible(x, y, cx, cy int) bool
- func (s *Slide) Layout() string
- func (s *Slide) NewContext() *SlideContext
- func (s *Slide) Part() *parts.SlidePart
- func (s *Slide) PartURI() *opc.PackURI
- func (s *Slide) ResolveColor(color string) Color
- func (s *Slide) SetLayout(layoutName string) bool
- func (s *Slide) SetTableCellText(gf *parts.XGraphicFrame, row, col int, text string)
- func (s *Slide) SlideSize() (cx, cy int)
- func (s *Slide) SlideSizeEMU() (cx, cy int)
- func (s *Slide) ValidateColor(color string) ColorValidationResult
- func (s *Slide) Viewport() *SlideViewport
- type SlideBuilder
- func (b *SlideBuilder) AddAutoShape(x, y, cx, cy int, presetID string) *parts.XSp
- func (b *SlideBuilder) AddChart(targetURI string) string
- func (b *SlideBuilder) AddImage(targetURI string) string
- func (b *SlideBuilder) AddMedia(targetURI string) string
- func (b *SlideBuilder) AddPicture(x, y, cx, cy int, imageRId string) *parts.XPicture
- func (b *SlideBuilder) AddTable(x, y, cx, cy, rows, cols int) *parts.XGraphicFrame
- func (b *SlideBuilder) AddTextBox(x, y, cx, cy int, text string) *parts.XSp
- func (b *SlideBuilder) GetChartRId(targetURI string) string
- func (b *SlideBuilder) GetImageRId(targetURI string) string
- func (b *SlideBuilder) GetMediaRId(targetURI string) string
- func (b *SlideBuilder) GetOrAddPicture(x, y, cx, cy int, imageURI string) *parts.XPicture
- func (b *SlideBuilder) GetRelationshipURI(rId string) string
- func (b *SlideBuilder) HasImage(targetURI string) bool
- func (b *SlideBuilder) HasMedia(targetURI string) bool
- func (b *SlideBuilder) SetTableCellText(gf *parts.XGraphicFrame, row, col int, text string)
- func (b *SlideBuilder) Slide() *parts.SlidePart
- type SlideContext
- func (ctx *SlideContext) AddAudio(data []byte, fileName string) (string, error)
- func (ctx *SlideContext) AddChart(chartType parts.ChartType, data map[string]interface{}) (string, error)
- func (ctx *SlideContext) AddChartRel(targetURI string) string
- func (ctx *SlideContext) AddChartXML(chartXML []byte) (string, error)
- func (ctx *SlideContext) AddImage(data []byte, fileName string) (string, error)
- func (ctx *SlideContext) AddImageRel(targetURI string) string
- func (ctx *SlideContext) AddMedia(data []byte, fileName string) (string, error)
- func (ctx *SlideContext) AddMediaRel(targetURI string) string
- func (ctx *SlideContext) AddMediaWithMIME(data []byte, fileName, mimeType string) (string, error)
- func (ctx *SlideContext) AddVideo(data []byte, fileName string) (string, error)
- func (ctx *SlideContext) AllocateShapeIDBatch(count int) []uint32
- func (ctx *SlideContext) AppendShape(shape interface{})
- func (ctx *SlideContext) AppendShapes(shapes ...interface{})
- func (ctx *SlideContext) CurrentShapeID() uint32
- func (ctx *SlideContext) EMUToPx(emu int) int
- func (ctx *SlideContext) HasRelationship(rID string) bool
- func (ctx *SlideContext) IsShapeIDAllocated(id uint32) bool
- func (ctx *SlideContext) NextShapeID() uint32
- func (ctx *SlideContext) Presentation() *Presentation
- func (ctx *SlideContext) PxToEMU(px int) int
- func (ctx *SlideContext) RenderComponents(components ...Component) error
- func (ctx *SlideContext) SlideIndex() int
- func (ctx *SlideContext) SlidePart() *parts.SlidePart
- func (ctx *SlideContext) SlideSize() (cx, cy int)
- type SlideMediaIndex
- type SlideSize
- type SlideViewport
- type TemplateBuilder
- type TemplateManager
- func (tm *TemplateManager) ClearCache()
- func (tm *TemplateManager) GetMasterCache() *MasterCache
- func (tm *TemplateManager) HasTemplate(name TemplateType) bool
- func (tm *TemplateManager) LoadDefault() (*opc.Package, error)
- func (tm *TemplateManager) LoadTemplate(name TemplateType) (*opc.Package, error)
- func (tm *TemplateManager) RegisterTemplate(name TemplateType, path string) error
- func (tm *TemplateManager) RegisterTemplateFromBytes(name TemplateType, data []byte) error
- func (tm *TemplateManager) RegisterTemplateFromFS(fsys fs.FS, name TemplateType, path string) error
- func (tm *TemplateManager) SetDefaultTemplate(name TemplateType)
- func (tm *TemplateManager) SetTemplateDir(dir string)
- type TemplateType
Constants ¶
const ( // AlphaOpaque 完全不透明 AlphaOpaque = 100000 // AlphaTransparent 完全透明 AlphaTransparent = 0 // AlphaDefault 默认透明度(100%) AlphaDefault = 100000 )
Alpha 常量(OOXML 范围:0-100000)
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 )
主题颜色名称常量
const ( // EMUsPerPixel 每像素对应的 EMU 数量 (96 DPI) // 1 英寸 = 914400 EMU, // 1 英寸 = 96 像素 (96 DPI) // 因此 1 px = 914400 / 96 = 9525 EMU EMUsPerPixel = 914400 / 96 // = 9525 )
Variables ¶
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") ColorTeal = RGBColor("008080") ColorOlive = RGBColor("808000") ColorMaroon = RGBColor("800000") ColorLime = RGBColor("00FF00") ColorAqua = RGBColor("00FFFF") ColorSilver = RGBColor("C0C0C0") ColorGold = RGBColor("FFD700") )
预设颜色常量(6位十六进制,无 # 前缀)
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} )
标准幻灯片尺寸变量
var SchemeColors = []string{ SchemeBg1, SchemeBg2, SchemeFg1, SchemeFg2, SchemeAccent1, SchemeAccent2, SchemeAccent3, SchemeAccent4, SchemeAccent5, SchemeAccent6, SchemeHlink, SchemeFolHlink, SchemeTx1, SchemeTx2, }
主题颜色列表
Functions ¶
func GetEmbeddedDefaultTemplate ¶
GetEmbeddedDefaultTemplate 获取嵌入式默认模板
func GetEmbeddedTemplate ¶
func GetEmbeddedTemplate(name TemplateType) (*opc.Package, error)
GetEmbeddedTemplate 获取嵌入式模板(使用全局管理器)
func LoadDefaultTemplate ¶
LoadDefaultTemplate 加载默认模板(使用全局管理器)
func LoadTemplate ¶
func LoadTemplate(name TemplateType) (*opc.Package, error)
LoadTemplate 加载指定模板(使用全局管理器)
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 )
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 ColorFromRGBA ¶
ColorFromRGBA 从 RGBA 值创建颜色 r, g, b: 0-255 alpha: 0-100000 (OOXML 标准)
func ParseColor ¶
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 (Color) AlphaPercent ¶
AlphaPercent 返回百分比形式的 alpha (0-100)
func (Color) AlphaValue ¶
AlphaValue 返回 OOXML 格式的 alpha 值 (0-100000) 用于 <a:alpha val="50000"/>
func (Color) RGBComponents ¶
RGBComponents 返回 RGB 分量 (r, g, b)
func (Color) WithAlphaPercent ¶
WithAlphaPercent 设置透明度(百分比)并返回新颜色 percent: 0-100
type ColorMap ¶
type ColorMap struct {
// contains filtered or unexported fields
}
ColorMap 颜色映射表 用于将颜色名称映射到实际颜色值
type ColorValidationResult ¶
type ColorValidationResult struct {
// IsValid 是否有效
IsValid bool
// Color 解析后的颜色
Color Color
// Original 原始输入
Original string
// Message 验证消息
Message string
}
ColorValidationResult 颜色验证结果
type Component ¶
type Component interface {
// Render 将组件渲染到幻灯片
// ctx: 提供组件所需的上下文和资源访问能力
// 返回 error 表示渲染失败
Render(ctx *SlideContext) error
}
Component 组件接口 所有可渲染到幻灯片的积木必须实现此接口
type ComponentList ¶
type ComponentList []Component
ComponentList 组件列表 用于批量管理组件
func (ComponentList) RenderAll ¶
func (cl ComponentList) RenderAll(ctx *SlideContext) error
RenderAll 渲染所有组件
type ComponentRenderError ¶
ComponentRenderError 组件渲染错误
func (*ComponentRenderError) Error ¶
func (e *ComponentRenderError) Error() string
Error 实现 error 接口
type ComponentWithName ¶
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) 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 (*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) 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) MasterExists ¶
func (c *MasterCache) MasterExists(masterID string) bool
MasterExists 检查母版是否存在
type MasterManager ¶
type MasterManager struct {
// contains filtered or unexported fields
}
MasterManager 母版/版式管理器
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) 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) 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 文件路径加载
type MediaManager ¶
type MediaManager struct {
// contains filtered or unexported fields
}
MediaManager 媒体资源管理器 维护 PPTX 中所有媒体资源的并发安全缓存
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) CountByType ¶
func (m *MediaManager) CountByType(mediaType parts.MediaType) int64
CountByType 返回指定类型的媒体资源数量
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) ListTargets ¶
func (m *MediaManager) ListTargets() []string
ListTargets 返回所有目标路径
func (*MediaManager) RemoveMedia ¶
func (m *MediaManager) RemoveMedia(rID string) bool
RemoveMedia 移除媒体资源
type Presentation ¶
type Presentation struct {
// contains filtered or unexported fields
}
Presentation PPTX 演示文稿总控门面
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) 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) Write ¶
func (p *Presentation) Write(w io.Writer) error
Write 将演示文稿写入 io.Writer 这是为高并发流式输出(如 HTTP 响应)准备的杀手锏
func (*Presentation) WriteToBytes ¶
func (p *Presentation) WriteToBytes() ([]byte, error)
WriteToBytes 将演示文稿写入字节数组
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) Position ¶
func (sc *ShapeComponent) Position() (x, y int)
Position 实现 ComponentWithPosition 接口
func (*ShapeComponent) Render ¶
func (sc *ShapeComponent) Render(ctx *SlideContext) error
Render 实现 Component 接口
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 ¶
AddAutoShape 添加自动形状 x, y: 位置(px 单位) cx, cy: 尺寸(px 单位) presetID: 预设形状类型(如 "rectangle", "ellipse", "roundRect")
func (*Slide) AddComponent ¶
AddComponent 添加组件到幻灯片 接收任何实现了 Component 接口的积木(文本、图片、图表) 内部生成一个 SlideContext,并调用组件的 c.Render(ctx) 方法
func (*Slide) AddComponents ¶
AddComponents 批量添加组件
func (*Slide) AddPicture ¶
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 ¶
AddPictureFromFile 从文件添加图片
func (*Slide) AddRectangle ¶
AddRectangle 添加矩形
func (*Slide) AddRoundRect ¶
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 ¶
AddTextBox 添加文本框 x, y: 位置(px 单位) cx, cy: 尺寸(px 单位) text: 文本内容
func (*Slide) CheckBoundary ¶
func (s *Slide) CheckBoundary(x, y, cx, cy int) BoundaryCheckResult
CheckBoundary 检查元素边界 x, y: 元素左上角坐标 (px) cx, cy: 元素宽度和高度 (px) 返回边界检查结果,包含越界信息和可见性状态
func (*Slide) GetImageRId ¶
GetImageRId 获取图片 rId,不存在则添加
func (*Slide) IsInsideBoundary ¶
IsInsideBoundary 检查元素是否完全在边界内
func (*Slide) ResolveColor ¶
ResolveColor 解析颜色(支持名称、十六进制、RGB、主题色)
func (*Slide) SetLayout ¶
SetLayout 设置幻灯片布局 layoutName: 布局名称(如 "blank", "title", "titleAndContent" 等) 返回是否设置成功
func (*Slide) SetTableCellText ¶
func (s *Slide) SetTableCellText(gf *parts.XGraphicFrame, row, col int, text string)
SetTableCellText 设置表格单元格文本
func (*Slide) SlideSizeEMU ¶
SlideSizeEMU 返回幻灯片尺寸(EMU 单位,高级用法)
func (*Slide) ValidateColor ¶
func (s *Slide) ValidateColor(color string) ColorValidationResult
ValidateColor 验证颜色
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 设置表格单元格文本
type SlideContext ¶
type SlideContext struct {
// contains filtered or unexported fields
}
SlideContext 幻灯片渲染上下文 提供组件渲染所需的资源和能力
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) 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 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 检查元素是否有部分可见
type TemplateBuilder ¶
type TemplateBuilder struct {
// contains filtered or unexported fields
}
TemplateBuilder 模板构建器 用于从零开始创建 PPTX 模板
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 NewTemplateManagerWithDir ¶
func NewTemplateManagerWithDir(dir string) *TemplateManager
NewTemplateManagerWithDir 创建带模板目录的模板管理器
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" )