diff --git a/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpi b/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpi index 37e135dfd..6fc3c5b11 100644 --- a/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpi +++ b/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpi @@ -1,16 +1,16 @@ - + - + <UseAppBundle Value="False"/> <ResourceType Value="res"/> @@ -24,6 +24,7 @@ </PublishOptions> <RunParams> <FormatVersion Value="2"/> + <Modes Count="0"/> </RunParams> <RequiredPackages Count="1"> <Item1> diff --git a/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpr b/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpr index 09c713278..930552b06 100644 --- a/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpr +++ b/components/fpspreadsheet/examples/other/metadata/demo_metadata.lpr @@ -62,17 +62,17 @@ var begin book := TsWorkbook.Create; try - book.MetaData.CreatedBy := 'Donald Duck'; + book.MetaData.CreatedBy := 'Donald Duck & Dagobert Duck'; book.MetaData.Authors.Add('Donald Duck II'); book.MetaData.DateCreated := EncodeDate(2020, 1, 1) + EncodeTime(12, 30, 40, 20); book.MetaData.DateLastModified := Now(); book.MetaData.LastModifiedBy := 'Dagobert Duck'; book.MetaData.Title := 'Test of metadata äöü'; - book.Metadata.Subject := 'FPSpreadsheet demos'; + book.Metadata.Subject := 'FPSpreadsheet demos & tests'; book.MetaData.Comments.Add('This is a test of spreadsheet metadata.'); book.MetaData.Comments.Add('Assign the author to the field CreatedBy.'); book.MetaData.Comments.Add('Assign the creation date to the field CreatedAt.'); - book.MetaData.Keywords.Add('Test1,Test2'); + book.MetaData.Keywords.Add('Test1,Test2,Test3&4'); book.MetaData.Keywords.Add('FPSpreadsheet'); book.MetaData.AddCustom('Comparny', 'Disney'); book.MetaData.AddCustom('Status', 'finished'); diff --git a/components/fpspreadsheet/source/common/fpsopendocument.pas b/components/fpspreadsheet/source/common/fpsopendocument.pas index bae21af15..0434f52c2 100644 --- a/components/fpspreadsheet/source/common/fpsopendocument.pas +++ b/components/fpspreadsheet/source/common/fpsopendocument.pas @@ -5877,23 +5877,23 @@ begin begin s := book.Metadata.Title; AppendToStream(FSMeta, Format( - '<dc:title>%s</dc:title>', [s])); + '<dc:title>%s</dc:title>', [UTF8TextToXMLText(s)])); end; if book.Metadata.Subject <> '' then begin s := book.Metadata.Subject; AppendToStream(FSMeta, Format( - '<dc:subject>%s</dc:subject>', [s])); + '<dc:subject>%s</dc:subject>', [UTF8TextToXMLText(s)])); end; if book.Metadata.CreatedBy <> '' then AppendToStream(FSMeta, Format( - '<meta:initial-creator>%s</meta:initial-creator>', [book.MetaData.CreatedBy])); + '<meta:initial-creator>%s</meta:initial-creator>', [UTF8TextToXMLText(book.MetaData.CreatedBy)])); if book.MetaData.LastModifiedBy <> '' then AppendToStream(FSMeta, Format( - '<dc:creator>%s</dc:creator>', [book.Metadata.LastModifiedBy])); + '<dc:creator>%s</dc:creator>', [UTF8TextToXMLText(book.Metadata.LastModifiedBy)])); if book.MetaData.DateCreated > 0 then begin @@ -5914,7 +5914,7 @@ begin if book.MetaData.Keywords.Count > 0 then for i := 0 to book.MetaData.Keywords.Count-1 do AppendToStream(FSMeta, Format( - '<meta:keyword>%s</meta:keyword>', [book.MetaData.Keywords[i]])); + '<meta:keyword>%s</meta:keyword>', [UTF8TextToXMLText(book.MetaData.Keywords[i])])); if book.MetaData.Comments.Count > 0 then begin @@ -5922,7 +5922,7 @@ begin for i := 1 to book.MetaData.Comments.Count-1 do s := s + #10 + book.MetaData.Comments[i]; AppendToStream(FSMeta, Format( - '<dc:description>%s</dc:description>', [s])); + '<dc:description>%s</dc:description>', [UTF8TextToXMLText(s)])); end; if book.MetaData.Custom.Count > 0 then @@ -5931,7 +5931,7 @@ begin AppendToStream(FSMeta, Format( '<meta:user-defined meta:name="%s">%s</meta:user-defined>', [ book.Metadata.Custom.Names[i], - book.Metadata.Custom.ValueFromIndex[i] + UTF8TextToXMLText(book.Metadata.Custom.ValueFromIndex[i]) ])); end; diff --git a/components/fpspreadsheet/source/common/xlsxml.pas b/components/fpspreadsheet/source/common/xlsxml.pas index f1c4f06b3..4b9e3ee3b 100644 --- a/components/fpspreadsheet/source/common/xlsxml.pas +++ b/components/fpspreadsheet/source/common/xlsxml.pas @@ -2729,7 +2729,7 @@ begin AppendToStream(AStream, Format(INDENT2 + '<%0:s dt:dt="string">%1:s</%0:s>' + LF, [ book.MetaData.Custom.Names[i], - book.MetaData.Custom.ValueFromIndex[i] + UTF8TextToXMLText(book.MetaData.Custom.ValueFromIndex[i]) ])); AppendToStream(AStream, INDENT1 + @@ -2795,22 +2795,22 @@ begin end; if book.MetaData.Title <> '' then - sTitle := '<Title>' + book.MetaData.Title + '' + LF + INDENT2 + sTitle := '' + UTF8TextToXMLText(book.MetaData.Title) + '' + LF + INDENT2 else sTitle := ''; if book.MetaData.Subject <> '' then - sSubject := '' + book.MetaData.Subject + '' + LF + INDENT2 + sSubject := '' + UTF8TextToXMLText(book.MetaData.Subject) + '' + LF + INDENT2 else sSubject := ''; if book.MetaData.CreatedBy <> '' then - sAuthor := '' + book.MetaData.CreatedBy + '' + LF + INDENT2 + sAuthor := '' + UTF8TextToXMLText(book.MetaData.CreatedBy) + '' + LF + INDENT2 else sAuthor := ''; if book.MetaData.LastModifiedBy <> '' then - sLastAuthor := '' + book.MetaData.LastModifiedBy + '' + LF + INDENT2 + sLastAuthor := '' + UTF8TextToXMLText(book.MetaData.LastModifiedBy) + '' + LF + INDENT2 else sLastAuthor := ''; diff --git a/components/fpspreadsheet/source/common/xlsxooxml.pas b/components/fpspreadsheet/source/common/xlsxooxml.pas index 0292176b4..64b769e8b 100644 --- a/components/fpspreadsheet/source/common/xlsxooxml.pas +++ b/components/fpspreadsheet/source/common/xlsxooxml.pas @@ -6288,7 +6288,7 @@ begin begin s := book.MetaData.KeyWords.CommaText; AppendToStream(AStream, Format( - '%s', [s])); + '%s', [UTF8TextToXMLText(s)])); end; if book.MetaData.Comments.Count > 0 then @@ -6298,14 +6298,14 @@ begin Delete(s, Length(s), 1); s := StringReplace(s, LineEnding, '_x000d_', [rfReplaceAll]); AppendToStream(AStream, Format( - '%s', [s])); + '%s', [UTF8TextToXMLText(s)])); end; if book.MetaData.LastModifiedBy <> '' then begin s := book.MetaData.LastModifiedBy; AppendToStream(AStream, Format( - '%s', [s])); // to do: check xml entities + '%s', [UTF8TextToXMLText(s)])); end; if book.MetaData.DateCreated > 0 then @@ -6313,7 +6313,7 @@ begin dt := book.MetaData.DateCreated + GetLocalTimeOffset / MinsPerDay; s := FormatDateTime(ISO8601FormatExtendedUTC, dt); AppendToStream(AStream, Format( - '%s', [s])); + '%s', [UTF8TextToXMLText(s)])); end; if book.MetaData.DateLastModified >0 then