mirror of
https://github.com/fumiama/go-docx.git
synced 2026-06-04 23:30:25 +08:00
130 lines
3.4 KiB
Go
130 lines
3.4 KiB
Go
/*
|
||
Copyright (c) 2020 gingfrederik
|
||
Copyright (c) 2021 Gonzalo Fernandez-Victorio
|
||
Copyright (c) 2021 Basement Crowd Ltd (https://www.basementcrowd.com)
|
||
Copyright (c) 2023 Fumiama Minamoto (源文雨)
|
||
|
||
This program is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU Affero General Public License as published
|
||
by the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU Affero General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Affero General Public License
|
||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||
*/
|
||
|
||
package docx
|
||
|
||
// AddParagraph adds a new paragraph
|
||
func (f *Docx) AddParagraph() *Paragraph {
|
||
p := &Paragraph{
|
||
Children: make([]interface{}, 0, 64),
|
||
file: f,
|
||
}
|
||
f.Document.Body.Items = append(f.Document.Body.Items, p)
|
||
return p
|
||
}
|
||
|
||
// AddParagraph adds a new paragraph
|
||
func (c *WTableCell) AddParagraph() *Paragraph {
|
||
c.Paragraphs = append(c.Paragraphs, &Paragraph{
|
||
Children: make([]interface{}, 0, 64),
|
||
file: c.file,
|
||
})
|
||
|
||
return c.Paragraphs[len(c.Paragraphs)-1]
|
||
}
|
||
|
||
// Justification allows to set para's horizonal alignment
|
||
//
|
||
// w:jc 属性的取值可以是以下之一:
|
||
// start:左对齐。
|
||
// center:居中对齐。
|
||
// end:右对齐。
|
||
// both:两端对齐。
|
||
// distribute:分散对齐。
|
||
func (p *Paragraph) Justification(val string) *Paragraph {
|
||
if p.Properties == nil {
|
||
p.Properties = &ParagraphProperties{}
|
||
}
|
||
p.Properties.Justification = &Justification{Val: val}
|
||
return p
|
||
}
|
||
|
||
// AddPageBreaks adds a pagebreaks
|
||
func (p *Paragraph) AddPageBreaks() *Run {
|
||
c := make([]interface{}, 1, 64)
|
||
c[0] = &BarterRabbet{
|
||
Type: "page",
|
||
}
|
||
run := &Run{
|
||
RunProperties: &RunProperties{},
|
||
Children: c,
|
||
}
|
||
p.Children = append(p.Children, run)
|
||
return run
|
||
}
|
||
|
||
// Style name
|
||
func (p *Paragraph) Style(val string) *Paragraph {
|
||
if p.Properties == nil {
|
||
p.Properties = &ParagraphProperties{}
|
||
}
|
||
p.Properties.Style = &Style{Val: val}
|
||
return p
|
||
}
|
||
|
||
// NumPr number properties
|
||
func (p *Paragraph) NumPr(numID, ilvl string) *Paragraph {
|
||
if p.Properties == nil {
|
||
p.Properties = &ParagraphProperties{}
|
||
}
|
||
// Initialize run properties if not exist
|
||
if p.Properties.RunProperties == nil {
|
||
p.Properties.RunProperties = &RunProperties{}
|
||
}
|
||
p.Properties.NumProperties = &NumProperties{
|
||
NumID: &NumID{
|
||
Val: numID,
|
||
},
|
||
Ilvl: &Ilevel{
|
||
Val: ilvl,
|
||
},
|
||
}
|
||
return p
|
||
}
|
||
|
||
// NumFont sets the font for numbering
|
||
func (p *Paragraph) NumFont(ascii, eastAsia, hansi, hint string) *Paragraph {
|
||
if p.Properties == nil {
|
||
p.Properties = &ParagraphProperties{}
|
||
}
|
||
if p.Properties.RunProperties == nil {
|
||
p.Properties.RunProperties = &RunProperties{}
|
||
}
|
||
p.Properties.RunProperties.Fonts = &RunFonts{
|
||
ASCII: ascii,
|
||
EastAsia: eastAsia,
|
||
HAnsi: hansi,
|
||
Hint: hint,
|
||
}
|
||
return p
|
||
}
|
||
|
||
// NumSize sets the size for numbering
|
||
func (p *Paragraph) NumSize(size string) *Paragraph {
|
||
if p.Properties == nil {
|
||
p.Properties = &ParagraphProperties{}
|
||
}
|
||
if p.Properties.RunProperties == nil {
|
||
p.Properties.RunProperties = &RunProperties{}
|
||
}
|
||
p.Properties.RunProperties.Size = &Size{Val: size}
|
||
return p
|
||
}
|