added stdPr and stdContent to table of contents
This commit is contained in:
@ -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);
|
||||||
});
|
});
|
||||||
|
@ -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);
|
||||||
|
12
src/file/table-of-contents/alias.ts
Normal file
12
src/file/table-of-contents/alias.ts
Normal 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 }));
|
||||||
|
}
|
||||||
|
}
|
12
src/file/table-of-contents/std-content.ts
Normal file
12
src/file/table-of-contents/std-content.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
9
src/file/table-of-contents/std-properties.ts
Normal file
9
src/file/table-of-contents/std-properties.ts
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user