From 89b85934f60ba0012f3de6da03eb12959e4b4b72 Mon Sep 17 00:00:00 2001 From: xuri <xuri.me@gmail.com> Date: Mon, 27 Dec 2021 23:34:14 +0800 Subject: This closes #1096, memory usage optimization and another 4 changes - Unzip shared string table to system temporary file when large inner XML, reduce memory usage about 70% - Remove unnecessary exported variable `XMLHeader`, we can using `encoding/xml` package's `xml.Header` instead of it - Using constant instead of inline text for default XML path - Rename exported option field `WorksheetUnzipMemLimit` to `UnzipXMLSizeLimit` - Unit test and documentation updated --- docProps.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'docProps.go') diff --git a/docProps.go b/docProps.go index c8ab27c..271b370 100644 --- a/docProps.go +++ b/docProps.go @@ -27,8 +27,8 @@ import ( // Application | The name of the application that created this document. // | // ScaleCrop | Indicates the display mode of the document thumbnail. Set this element -// | to TRUE to enable scaling of the document thumbnail to the display. Set -// | this element to FALSE to enable cropping of the document thumbnail to +// | to 'true' to enable scaling of the document thumbnail to the display. Set +// | this element to 'false' to enable cropping of the document thumbnail to // | show only sections that will fit the display. // | // DocSecurity | Security level of a document as a numeric value. Document security is @@ -41,8 +41,8 @@ import ( // Company | The name of a company associated with the document. // | // LinksUpToDate | Indicates whether hyperlinks in a document are up-to-date. Set this -// | element to TRUE to indicate that hyperlinks are updated. Set this -// | element to FALSE to indicate that hyperlinks are outdated. +// | element to 'true' to indicate that hyperlinks are updated. Set this +// | element to 'false' to indicate that hyperlinks are outdated. // | // HyperlinksChanged | Specifies that one or more hyperlinks in this part were updated // | exclusively in this part by a producer. The next producer to open this @@ -75,7 +75,7 @@ func (f *File) SetAppProps(appProperties *AppProperties) (err error) { field string ) app = new(xlsxProperties) - if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML("docProps/app.xml")))). + if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML(dafaultXMLPathDocPropsApp)))). Decode(app); err != nil && err != io.EOF { err = fmt.Errorf("xml decode error: %s", err) return @@ -95,14 +95,14 @@ func (f *File) SetAppProps(appProperties *AppProperties) (err error) { } app.Vt = NameSpaceDocumentPropertiesVariantTypes.Value output, err = xml.Marshal(app) - f.saveFileList("docProps/app.xml", output) + f.saveFileList(dafaultXMLPathDocPropsApp, output) return } // GetAppProps provides a function to get document application properties. func (f *File) GetAppProps() (ret *AppProperties, err error) { var app = new(xlsxProperties) - if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML("docProps/app.xml")))). + if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML(dafaultXMLPathDocPropsApp)))). Decode(app); err != nil && err != io.EOF { err = fmt.Errorf("xml decode error: %s", err) return @@ -181,7 +181,7 @@ func (f *File) SetDocProps(docProperties *DocProperties) (err error) { ) core = new(decodeCoreProperties) - if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML("docProps/core.xml")))). + if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML(dafaultXMLPathDocPropsCore)))). Decode(core); err != nil && err != io.EOF { err = fmt.Errorf("xml decode error: %s", err) return @@ -223,7 +223,7 @@ func (f *File) SetDocProps(docProperties *DocProperties) (err error) { newProps.Modified.Text = docProperties.Modified } output, err = xml.Marshal(newProps) - f.saveFileList("docProps/core.xml", output) + f.saveFileList(dafaultXMLPathDocPropsCore, output) return } @@ -232,7 +232,7 @@ func (f *File) SetDocProps(docProperties *DocProperties) (err error) { func (f *File) GetDocProps() (ret *DocProperties, err error) { var core = new(decodeCoreProperties) - if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML("docProps/core.xml")))). + if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML(dafaultXMLPathDocPropsCore)))). Decode(core); err != nil && err != io.EOF { err = fmt.Errorf("xml decode error: %s", err) return -- cgit v1.2.1