document/pptx.go

54 lines
1.0 KiB
Go

package office
import (
"io"
"os"
"apigo.cc/go/file"
"github.com/young2j/oxmltotext/pptxtotext"
)
// Pptx 封装了 PowerPoint 文档的读取操作。
type Pptx struct {
filename string
}
// OpenPptx 打开一个 PowerPoint 文档 (.pptx)。
func OpenPptx(filename string) (*Pptx, error) {
if !file.Exists(filename) {
return nil, os.ErrNotExist
}
return &Pptx{filename: filename}, nil
}
// Text 提取文档中的所有文本。
func (p *Pptx) Text() (string, error) {
pp, err := pptxtotext.Open(p.filename)
if err != nil {
return "", err
}
defer pp.Close()
return pp.ExtractTexts()
}
// ReadText 从 io.Reader 中读取并提取 PPT 文本。
func (p *Pptx) ReadText(r io.ReaderAt, size int64) (string, error) {
pp, err := pptxtotext.OpenReader(r, size)
if err != nil {
return "", err
}
defer pp.Close()
return pp.ExtractTexts()
}
// ToMarkdown 将 PowerPoint 文档内容转换为 Markdown 格式。
func (p *Pptx) ToMarkdown() (string, error) {
text, err := p.Text()
if err != nil {
return "", err
}
return text, nil
}