added stdPr and stdContent to table of contents

This commit is contained in:
Sergio Mendonça
2018-09-19 11:01:07 -03:00
parent baf0f17bd6
commit 7cd8864fb9
6 changed files with 49 additions and 8 deletions

View File

@ -24,5 +24,5 @@ doc.addParagraph(new Paragraph("I'm a another text very nicely written.'"));
const packer = new Packer(); const packer = new Packer();
packer.toBuffer(doc).then((buffer) => { packer.toBuffer(doc).then((buffer) => {
fs.writeFileSync("My Document.docx", buffer); fs.writeFileSync("tmp/My Document.docx", buffer);
}); });

View File

@ -9,7 +9,7 @@ import { FootNotes } from "./footnotes";
import { HeaderWrapper } from "./header-wrapper"; import { HeaderWrapper } from "./header-wrapper";
import { Image, Media } from "./media"; import { Image, Media } from "./media";
import { Numbering } from "./numbering"; import { Numbering } from "./numbering";
import { Bookmark, Hyperlink, Paragraph, Run } from "./paragraph"; import { Bookmark, Hyperlink, Paragraph, Run, TextRun } from "./paragraph";
import { Begin, End, Separate } from "./paragraph/run/field"; import { Begin, End, Separate } from "./paragraph/run/field";
import { Tab } from "./paragraph/run/tab"; import { Tab } from "./paragraph/run/tab";
import { Relationships } from "./relationships"; import { Relationships } from "./relationships";
@ -341,6 +341,8 @@ export class File {
beginRun.addChildElement(new Separate()); beginRun.addChildElement(new Separate());
generatedParagraph.addRun(beginRun); generatedParagraph.addRun(beginRun);
generatedParagraph.addRun(new TextRun("?"));
const endRun = new Run(); const endRun = new Run();
endRun.addChildElement(new End()); endRun.addChildElement(new End());
generatedParagraph.addRun(endRun); generatedParagraph.addRun(endRun);

View File

@ -0,0 +1,12 @@
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
class AliasAttributes extends XmlAttributeComponent<{ alias: string }> {
protected xmlKeys = { alias: "w:val" };
}
export class Alias extends XmlComponent {
constructor(alias: string) {
super("w:alias");
this.root.push(new AliasAttributes({ alias }));
}
}

View File

@ -0,0 +1,12 @@
import { Paragraph } from "file/paragraph";
import { XmlComponent } from "file/xml-components";
export class StdContent extends XmlComponent {
constructor() {
super("w:stdContent");
}
public addGeneratedContent(paragraph: Paragraph): void {
this.root.splice(this.root.length - 1, 0, paragraph);
}
}

View File

@ -0,0 +1,9 @@
import { XmlComponent } from "file/xml-components";
import { Alias } from "./alias";
export class StdProperties extends XmlComponent {
constructor(alias: string) {
super("w:stdPr");
this.root.push(new Alias(alias));
}
}

View File

@ -1,21 +1,27 @@
// import { TableOfContentsProperties } from "./properties"; // import { TableOfContentsProperties } from "./properties";
import { Paragraph, ParagraphProperties } from "file/paragraph"; import { Paragraph } from "file/paragraph";
import { Run } from "file/paragraph/run"; import { Run } from "file/paragraph/run";
import { Begin, End, Separate } from "file/paragraph/run/field"; import { Begin, End, Separate } from "file/paragraph/run/field";
import { XmlComponent } from "file/xml-components"; import { XmlComponent } from "file/xml-components";
import { StdContent } from "./std-content";
import { StdProperties } from "./std-properties";
import { TableOfContentsInstruction } from "./table-of-contents-instruction"; import { TableOfContentsInstruction } from "./table-of-contents-instruction";
export class TableOfContents extends XmlComponent { export class TableOfContents extends XmlComponent {
// private readonly tocProperties: TableOfContentsProperties; // private readonly tocProperties: TableOfContentsProperties;
private readonly properties: ParagraphProperties; private readonly properties: StdProperties;
private readonly content: StdContent;
private readonly instruction: TableOfContentsInstruction; private readonly instruction: TableOfContentsInstruction;
constructor(/*tocProperties?: TableOfContentsProperties*/) { constructor(/*tocProperties?: TableOfContentsProperties*/) {
super("w:sdt"); super("w:sdt");
this.properties = new ParagraphProperties(); this.properties = new StdProperties("Table of Contents");
this.content = new StdContent();
this.instruction = new TableOfContentsInstruction(); this.instruction = new TableOfContentsInstruction();
this.root.push(this.properties); this.root.push(this.properties);
this.root.push(this.content);
// this.tocProperties = tocProperties || new TableOfContentsProperties(); // this.tocProperties = tocProperties || new TableOfContentsProperties();
const beginParagraph = new Paragraph(); const beginParagraph = new Paragraph();
const beginRun = new Run(); const beginRun = new Run();
@ -23,13 +29,13 @@ export class TableOfContents extends XmlComponent {
beginRun.addChildElement(this.instruction); beginRun.addChildElement(this.instruction);
beginRun.addChildElement(new Separate()); beginRun.addChildElement(new Separate());
beginParagraph.addRun(beginRun); beginParagraph.addRun(beginRun);
this.root.push(beginParagraph); this.content.addChildElement(beginParagraph);
const endParagraph = new Paragraph(); const endParagraph = new Paragraph();
const endRun = new Run(); const endRun = new Run();
endRun.addChildElement(new End()); endRun.addChildElement(new End());
endParagraph.addRun(endRun); endParagraph.addRun(endRun);
this.root.push(endParagraph); this.content.addChildElement(endParagraph);
} }
public getHeaderRange(): string { public getHeaderRange(): string {
@ -37,6 +43,6 @@ export class TableOfContents extends XmlComponent {
} }
public addGeneratedContent(paragraph: Paragraph): void { public addGeneratedContent(paragraph: Paragraph): void {
this.root.splice(this.root.length - 1, 0, paragraph); this.content.addGeneratedContent(paragraph);
} }
} }