Section WIP
This commit is contained in:
@ -15,68 +15,77 @@ const footer = doc.createFooter();
|
||||
footer.add(new Paragraph("Footer on another page"));
|
||||
|
||||
doc.addSection({
|
||||
headers: {
|
||||
default: header,
|
||||
properties: {
|
||||
headers: {
|
||||
default: header,
|
||||
},
|
||||
footers: {
|
||||
default: footer,
|
||||
},
|
||||
pageNumberStart: 1,
|
||||
pageNumberFormatType: PageNumberFormat.DECIMAL,
|
||||
},
|
||||
footers: {
|
||||
default: footer,
|
||||
},
|
||||
pageNumberStart: 1,
|
||||
pageNumberFormatType: PageNumberFormat.DECIMAL,
|
||||
children: [new Paragraph("hello")],
|
||||
});
|
||||
|
||||
doc.add(new Paragraph("hello"));
|
||||
|
||||
doc.addSection({
|
||||
headers: {
|
||||
default: header,
|
||||
properties: {
|
||||
headers: {
|
||||
default: header,
|
||||
},
|
||||
footers: {
|
||||
default: footer,
|
||||
},
|
||||
pageNumberStart: 1,
|
||||
pageNumberFormatType: PageNumberFormat.DECIMAL,
|
||||
orientation: PageOrientation.LANDSCAPE,
|
||||
},
|
||||
footers: {
|
||||
default: footer,
|
||||
},
|
||||
pageNumberStart: 1,
|
||||
pageNumberFormatType: PageNumberFormat.DECIMAL,
|
||||
orientation: PageOrientation.LANDSCAPE,
|
||||
children: [new Paragraph("hello in landscape")],
|
||||
});
|
||||
|
||||
doc.add(new Paragraph("hello in landscape"));
|
||||
|
||||
const header2 = doc.createHeader();
|
||||
const pageNumber = new TextRun("Page number: ").pageNumber();
|
||||
header2.add(new Paragraph({}).addRun(pageNumber));
|
||||
|
||||
doc.addSection({
|
||||
headers: {
|
||||
default: header2,
|
||||
properties: {
|
||||
headers: {
|
||||
default: header2,
|
||||
},
|
||||
orientation: PageOrientation.PORTRAIT,
|
||||
},
|
||||
orientation: PageOrientation.PORTRAIT,
|
||||
children: [new Paragraph("Page number in the header must be 2, because it continues from the previous section.")],
|
||||
});
|
||||
|
||||
doc.add(new Paragraph("Page number in the header must be 2, because it continues from the previous section."));
|
||||
|
||||
doc.addSection({
|
||||
headers: {
|
||||
default: header2,
|
||||
properties: {
|
||||
headers: {
|
||||
default: header2,
|
||||
},
|
||||
pageNumberFormatType: PageNumberFormat.UPPER_ROMAN,
|
||||
orientation: PageOrientation.PORTRAIT,
|
||||
},
|
||||
pageNumberFormatType: PageNumberFormat.UPPER_ROMAN,
|
||||
orientation: PageOrientation.PORTRAIT,
|
||||
children: [
|
||||
new Paragraph(
|
||||
"Page number in the header must be III, because it continues from the previous section, but is defined as upper roman.",
|
||||
),
|
||||
],
|
||||
});
|
||||
|
||||
doc.add(new Paragraph(
|
||||
"Page number in the header must be III, because it continues from the previous section, but is defined as upper roman.",
|
||||
));
|
||||
|
||||
doc.addSection({
|
||||
headers: {
|
||||
default: header2,
|
||||
properties: {
|
||||
headers: {
|
||||
default: header2,
|
||||
},
|
||||
pageNumberFormatType: PageNumberFormat.DECIMAL,
|
||||
pageNumberStart: 25,
|
||||
orientation: PageOrientation.PORTRAIT,
|
||||
},
|
||||
pageNumberFormatType: PageNumberFormat.DECIMAL,
|
||||
pageNumberStart: 25,
|
||||
orientation: PageOrientation.PORTRAIT,
|
||||
children: [
|
||||
new Paragraph("Page number in the header must be 25, because it is defined to start at 25 and to be decimal in this section."),
|
||||
],
|
||||
});
|
||||
|
||||
doc.add(new Paragraph("Page number in the header must be 25, because it is defined to start at 25 and to be decimal in this section."));
|
||||
|
||||
const packer = new Packer();
|
||||
|
||||
packer.toBuffer(doc).then((buffer) => {
|
||||
|
@ -15,7 +15,7 @@ describe("File", () => {
|
||||
const header = doc.createHeader();
|
||||
const footer = doc.createFooter();
|
||||
|
||||
doc.addSection({
|
||||
doc.addSectionOld({
|
||||
headers: {
|
||||
default: header,
|
||||
},
|
||||
@ -35,7 +35,7 @@ describe("File", () => {
|
||||
const header = doc.createHeader();
|
||||
const footer = doc.createFooter();
|
||||
|
||||
doc.addSection({
|
||||
doc.addSectionOld({
|
||||
headers: {
|
||||
first: header,
|
||||
},
|
||||
@ -55,7 +55,7 @@ describe("File", () => {
|
||||
const header = doc.createHeader();
|
||||
const footer = doc.createFooter();
|
||||
|
||||
doc.addSection({
|
||||
doc.addSectionOld({
|
||||
headers: {
|
||||
default: header,
|
||||
first: header,
|
||||
|
@ -27,6 +27,11 @@ import { DefaultStylesFactory } from "./styles/factory";
|
||||
import { Table } from "./table";
|
||||
import { TableOfContents } from "./table-of-contents";
|
||||
|
||||
export interface ISectionOptions {
|
||||
readonly properties: SectionPropertiesOptions;
|
||||
readonly children: Array<Paragraph | Table | TableOfContents>;
|
||||
}
|
||||
|
||||
export class File {
|
||||
// tslint:disable-next-line:readonly-keyword
|
||||
private currentRelationshipId: number = 1;
|
||||
@ -54,6 +59,7 @@ export class File {
|
||||
},
|
||||
sectionPropertiesOptions: SectionPropertiesOptions = {},
|
||||
fileProperties: IFileProperties = {},
|
||||
sections: ISectionOptions[] = [],
|
||||
) {
|
||||
this.coreProperties = new CoreProperties(options);
|
||||
this.numbering = new Numbering();
|
||||
@ -110,6 +116,14 @@ export class File {
|
||||
|
||||
this.document = new Document(newSectionPropertiesOptions);
|
||||
this.settings = new Settings();
|
||||
|
||||
for (const section of sections) {
|
||||
this.document.Body.addSection(section.properties);
|
||||
|
||||
for (const child of section.children) {
|
||||
this.add(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public add(item: Paragraph | Table | TableOfContents): File {
|
||||
@ -167,7 +181,7 @@ export class File {
|
||||
return bookmark;
|
||||
}
|
||||
|
||||
public addSection(sectionPropertiesOptions: SectionPropertiesOptions): void {
|
||||
public addSectionOld(sectionPropertiesOptions: SectionPropertiesOptions): void {
|
||||
this.document.Body.addSection(sectionPropertiesOptions);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user