87 lines
2.9 KiB
TypeScript
87 lines
2.9 KiB
TypeScript
![]() |
// Exporting the document as a stream
|
||
|
// Import from 'docx' rather than '../build' if you install from npm
|
||
|
import * as fs from "fs";
|
||
|
import { Document, HeadingLevel, Packer, Paragraph, TabStopPosition, TabStopType, TextRun } from "../build";
|
||
|
|
||
|
const columnWidth = TabStopPosition.MAX / 4;
|
||
|
const reciptTabStops = [
|
||
|
// no need to define first left tab column
|
||
|
// the right aligned tab column position should point to the end of column
|
||
|
// i.e. in this case
|
||
|
// (end position of 1st) + (end position of current)
|
||
|
// columnWidth + columnWidth = columnWidth * 2
|
||
|
|
||
|
{ type: TabStopType.RIGHT, position: columnWidth * 2 },
|
||
|
{ type: TabStopType.RIGHT, position: columnWidth * 3 },
|
||
|
{ type: TabStopType.RIGHT, position: TabStopPosition.MAX }
|
||
|
], twoTabStops = [
|
||
|
{ type: TabStopType.RIGHT, position: TabStopPosition.MAX }
|
||
|
];
|
||
|
|
||
|
const doc = new Document({
|
||
|
sections: [
|
||
|
{
|
||
|
properties: {},
|
||
|
children: [
|
||
|
new Paragraph({
|
||
|
heading: HeadingLevel.HEADING_1,
|
||
|
children: [ new TextRun("Recipt 001")],
|
||
|
}),
|
||
|
new Paragraph({
|
||
|
tabStops: twoTabStops,
|
||
|
children: [
|
||
|
new TextRun({
|
||
|
text: "To Bob.\tBy Alice.",
|
||
|
bold: true
|
||
|
})
|
||
|
],
|
||
|
|
||
|
}),
|
||
|
new Paragraph({
|
||
|
tabStops: twoTabStops,
|
||
|
children: [
|
||
|
new TextRun("Foo Inc\tBar Inc")
|
||
|
],
|
||
|
}),
|
||
|
new Paragraph({text: ""}),
|
||
|
new Paragraph({
|
||
|
tabStops: reciptTabStops,
|
||
|
|
||
|
children: [
|
||
|
new TextRun({
|
||
|
text: "Item\tPrice\tQuantity\tSub-total",
|
||
|
bold: true
|
||
|
})
|
||
|
],
|
||
|
}),
|
||
|
new Paragraph({
|
||
|
tabStops: reciptTabStops,
|
||
|
text: "Item 3\t10\t5\t50",
|
||
|
}),
|
||
|
new Paragraph({
|
||
|
tabStops: reciptTabStops,
|
||
|
text: "Item 3\t10\t5\t50",
|
||
|
}),
|
||
|
new Paragraph({
|
||
|
tabStops: reciptTabStops,
|
||
|
text: "Item 3\t10\t5\t50"
|
||
|
}),
|
||
|
new Paragraph({
|
||
|
tabStops: reciptTabStops,
|
||
|
children: [
|
||
|
new TextRun({
|
||
|
text: "\t\tTotal: 200",
|
||
|
bold: true
|
||
|
})
|
||
|
],
|
||
|
})
|
||
|
],
|
||
|
},
|
||
|
],
|
||
|
});
|
||
|
|
||
|
|
||
|
const stream = Packer.toStream(doc);
|
||
|
stream.pipe(fs.createWriteStream("My Document.docx"));
|
||
|
|