SaveAsTemplate and SaveToFileAsTemplate are added for presentation (#400)

Co-authored-by: Gunnsteinn Hall <gunnsteinn.hall@gmail.com>
This commit is contained in:
Vyacheslav Zgordan 2020-06-07 20:13:15 +07:00 committed by GitHub
parent 1bc7809fb0
commit 9892c32fee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -376,6 +376,15 @@ func (p *Presentation) AddDefaultSlideWithLayout(l SlideLayout) (Slide, error) {
// Save writes the presentation out to a writer in the Zip package format
func (p *Presentation) Save(w io.Writer) error {
return p.save(w, false)
}
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func (p *Presentation) SaveAsTemplate(w io.Writer) error {
return p.save(w, true)
}
func (p *Presentation) save(w io.Writer, isTemplate bool) error {
if err := p.x.Validate(); err != nil {
log.Printf("validation error in document: %s", err)
}
@ -395,6 +404,14 @@ func (p *Presentation) Save(w io.Writer) error {
r.Properties().SetSolidFill(color.Red)
}
if isTemplate {
p.ContentTypes.RemoveOverride("application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml")
p.ContentTypes.EnsureOverride("/ppt/presentation.xml", "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml")
} else {
p.ContentTypes.RemoveOverride("application/vnd.openxmlformats-officedocument.presentationml.template.main+xml")
p.ContentTypes.EnsureOverride("/ppt/presentation.xml", "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml")
}
dt := unioffice.DocTypePresentation
z := zip.NewWriter(w)
@ -476,12 +493,21 @@ func (p *Presentation) Save(w io.Writer) error {
// SaveToFile writes the Presentation out to a file.
func (p *Presentation) SaveToFile(path string) error {
return p.saveToFile(path, false)
}
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func (p *Presentation) SaveToFileAsTemplate(path string) error {
return p.saveToFile(path, true)
}
func (p *Presentation) saveToFile(path string, isTemplate bool) error {
f, err := os.Create(path)
if err != nil {
return err
}
defer f.Close()
return p.Save(f)
return p.save(f, isTemplate)
}
func (p *Presentation) Validate() error {