79 lines
2.5 KiB
TypeScript
79 lines
2.5 KiB
TypeScript
// Example on how to customise the look at feel using Styles
|
|
// Import from 'docx' rather than '../build' if you install from npm
|
|
import * as fs from "fs";
|
|
import { Document, Packer } from "../build";
|
|
|
|
const doc = new Document({
|
|
creator: "Clippy",
|
|
title: "Sample Document",
|
|
description: "A brief example of using docx",
|
|
});
|
|
|
|
doc.Styles.createParagraphStyle("Heading1", "Heading 1")
|
|
.basedOn("Normal")
|
|
.next("Normal")
|
|
.quickFormat()
|
|
.size(28)
|
|
.bold()
|
|
.italics()
|
|
.spacing({ after: 120 });
|
|
|
|
doc.Styles.createParagraphStyle("Heading2", "Heading 2")
|
|
.basedOn("Normal")
|
|
.next("Normal")
|
|
.quickFormat()
|
|
.size(26)
|
|
.bold()
|
|
.underline("double", "FF0000")
|
|
.spacing({ before: 240, after: 120 });
|
|
|
|
doc.Styles.createParagraphStyle("aside", "Aside")
|
|
.basedOn("Normal")
|
|
.next("Normal")
|
|
.color("999999")
|
|
.italics()
|
|
.indent({ left: 720 })
|
|
.spacing({ line: 276 });
|
|
|
|
doc.Styles.createParagraphStyle("wellSpaced", "Well Spaced")
|
|
.basedOn("Normal")
|
|
.spacing({ line: 276, before: 20 * 72 * 0.1, after: 20 * 72 * 0.05 });
|
|
|
|
doc.Styles.createParagraphStyle("ListParagraph", "List Paragraph")
|
|
.quickFormat()
|
|
.basedOn("Normal");
|
|
|
|
const numberedAbstract = doc.Numbering.createAbstractNumbering();
|
|
numberedAbstract.createLevel(0, "lowerLetter", "%1)", "left");
|
|
|
|
doc.createParagraph("Test heading1, bold and italicized").heading1();
|
|
doc.createParagraph("Some simple content");
|
|
doc.createParagraph("Test heading2 with double red underline").heading2();
|
|
|
|
const letterNumbering = doc.Numbering.createConcreteNumbering(numberedAbstract);
|
|
const letterNumbering5 = doc.Numbering.createConcreteNumbering(numberedAbstract);
|
|
letterNumbering5.overrideLevel(0, 5);
|
|
|
|
doc.createParagraph("Option1").setNumbering(letterNumbering, 0);
|
|
doc.createParagraph("Option5 -- override 2 to 5").setNumbering(letterNumbering5, 0);
|
|
doc.createParagraph("Option3").setNumbering(letterNumbering, 0);
|
|
|
|
doc
|
|
.createParagraph()
|
|
.createTextRun("Some monospaced content")
|
|
.font("Monospace");
|
|
|
|
doc.createParagraph("An aside, in light gray italics and indented").style("aside");
|
|
doc.createParagraph("This is normal, but well-spaced text").style("wellSpaced");
|
|
const para = doc.createParagraph();
|
|
para.createTextRun("This is a bold run,").bold();
|
|
para.createTextRun(" switching to normal ");
|
|
para.createTextRun("and then underlined ").underline();
|
|
para.createTextRun("and back to normal.");
|
|
|
|
const packer = new Packer();
|
|
|
|
packer.toBuffer(doc).then((buffer) => {
|
|
fs.writeFileSync("My Document.docx", buffer);
|
|
});
|