XMLHeader is a header that MarshalXML uses to prefix the XML files it creates.
const XMLHeader = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>` + "\n"
func AddFileFromBytes(z *zip.Writer, zipPath string, data []byte) error
AddFileFromBytes takes a byte array and adds it at a given path to a zip file.
func AddFileFromDisk(z *zip.Writer, zipPath, storagePath string) error
AddFileFromDisk reads a file from internal storage and adds it at a given path to a zip file. TODO: Rename to AddFileFromStorage in next major version release (v2). NOTE: If disk storage cannot be used, memory storage can be used instead by calling memstore.SetAsStorage().
func Decode(f *zip.File, dest interface{}) error
Decode unmarshals the content of a *zip.File as XML to a given destination.
func ExtractToDiskTmp(f *zip.File, path string) (string, error)
ExtractToDiskTmp extracts a zip file to a temporary file in a given path, returning the name of the file.
func MarshalXML(z *zip.Writer, filename string, v interface{}) error
MarshalXML creates a file inside of a zip and marshals an object as xml, prefixing it with a standard XML header.
func MarshalXMLByType(z *zip.Writer, dt unioffice.DocType, typ string, v interface{}) error
func MarshalXMLByTypeIndex(z *zip.Writer, dt unioffice.DocType, typ string, idx int, v interface{}) error
func RelationsPathFor(path string) string
RelationsPathFor returns the relations path for a given filename.
DecodeMap is used to walk a tree of relationships, decoding files and passing control back to the document.
type DecodeMap struct {
// contains filtered or unexported fields
}
func (d *DecodeMap) AddTarget(filePath string, ifc interface{}, sourceFileType string, idx uint32) bool
AddTarget allows documents to register decode targets. Path is a path that will be found in the zip file and ifc is an XML element that the file will be unmarshaled to. filePath is the absolute path to the target, ifc is the object to decode into, sourceFileType is the type of file that the reference was discovered in, and index is the index of the source file type.
func (d *DecodeMap) Decode(files []*zip.File) error
Decode loops decoding targets registered with AddTarget and calling th
func (d *DecodeMap) IndexFor(path string) int
func (d *DecodeMap) RecordIndex(path string, idx int)
func (d *DecodeMap) SetOnNewRelationshipFunc(fn OnNewRelationshipFunc)
SetOnNewRelationshipFunc sets the function to be called when a new relationship has been discovered.
OnNewRelationshipFunc is called when a new relationship has been discovered.
target is a resolved path that takes into account the location of the relationships file source and should be the path in the zip file.
files are passed so non-XML files that can't be handled by AddTarget can be decoded directly (e.g. images)
rel is the actual relationship so its target can be modified if the source target doesn't match where unioffice will write the file (e.g. read in 'xl/worksheets/MyWorksheet.xml' and we'll write out 'xl/worksheets/sheet1.xml')
type OnNewRelationshipFunc func(decMap *DecodeMap, target, typ string, files []*zip.File, rel *relationships.Relationship, src Target) error
SelfClosingWriter wraps a writer and replaces XML tags of the type <foo></foo> with <foo/>
type SelfClosingWriter struct { W io.Writer }
func (s SelfClosingWriter) Write(b []byte) (int, error)
type Target struct { Path string Typ string Ifc interface{} Index uint32 }