2019-07-25 19:43:46 +03:00
// Copyright 2017 FoxyUtils ehf. All rights reserved.
2017-08-28 20:56:18 -05:00
package main
2018-01-04 18:57:30 -06:00
import (
2019-05-04 11:18:06 +03:00
"github.com/unidoc/unioffice/document"
"github.com/unidoc/unioffice/measurement"
"github.com/unidoc/unioffice/schema/soo/wml"
2018-01-04 18:57:30 -06:00
)
2017-08-28 20:56:18 -05:00
var lorem = ` Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin lobortis, lectus dictum feugiat tempus, sem neque finibus enim, sed eleifend sem nunc ac diam. Vestibulum tempus sagittis elementum `
func main ( ) {
doc := document . New ( )
// Force the TOC to update upon opening the document
doc . Settings . SetUpdateFieldsOnOpen ( true )
// Add a TOC
doc . AddParagraph ( ) . AddRun ( ) . AddField ( document . FieldTOC )
// followed by a page break
2017-08-31 19:28:39 -05:00
doc . AddParagraph ( ) . Properties ( ) . AddSection ( wml . ST_SectionMarkNextPage )
2017-08-28 20:56:18 -05:00
2018-01-04 18:57:30 -06:00
nd := doc . Numbering . AddDefinition ( )
for i := 0 ; i < 9 ; i ++ {
lvl := nd . AddLevel ( )
lvl . SetFormat ( wml . ST_NumberFormatNone )
lvl . SetAlignment ( wml . ST_JcLeft )
if i % 2 == 0 {
lvl . SetFormat ( wml . ST_NumberFormatBullet )
lvl . RunProperties ( ) . SetFontFamily ( "Symbol" )
lvl . SetText ( "" )
}
lvl . Properties ( ) . SetLeftIndent ( 0.5 * measurement . Distance ( i ) * measurement . Inch )
}
2017-08-28 20:56:18 -05:00
// and finally paragraphs at different heading levels
for i := 0 ; i < 4 ; i ++ {
para := doc . AddParagraph ( )
2018-01-04 18:57:30 -06:00
para . SetNumberingDefinition ( nd )
2017-08-31 19:28:39 -05:00
para . Properties ( ) . SetHeadingLevel ( 1 )
2017-08-28 20:56:18 -05:00
para . AddRun ( ) . AddText ( "First Level" )
doc . AddParagraph ( ) . AddRun ( ) . AddText ( lorem )
for i := 0 ; i < 3 ; i ++ {
para := doc . AddParagraph ( )
2018-01-04 18:57:30 -06:00
para . SetNumberingDefinition ( nd )
2017-08-31 19:28:39 -05:00
para . Properties ( ) . SetHeadingLevel ( 2 )
2017-08-28 20:56:18 -05:00
para . AddRun ( ) . AddText ( "Second Level" )
doc . AddParagraph ( ) . AddRun ( ) . AddText ( lorem )
para = doc . AddParagraph ( )
2018-01-04 18:57:30 -06:00
para . SetNumberingDefinition ( nd )
2017-08-31 19:28:39 -05:00
para . Properties ( ) . SetHeadingLevel ( 3 )
2017-08-28 20:56:18 -05:00
para . AddRun ( ) . AddText ( "Third Level" )
doc . AddParagraph ( ) . AddRun ( ) . AddText ( lorem )
}
}
doc . SaveToFile ( "toc.docx" )
}