deno.land / x / docx@8.5.0 / demo / 75-tab-stops.ts
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182// Example of using tab stops
import * as fs from "fs";import { Document, HeadingLevel, Packer, Paragraph, TabStopPosition, TabStopType, TextRun } from "docx";
const columnWidth = TabStopPosition.MAX / 4;const receiptTabStops = [ // 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 },];const twoTabStops = [{ type: TabStopType.RIGHT, position: TabStopPosition.MAX }];
const doc = new Document({ defaultTabStop: 0, sections: [ { properties: {}, children: [ new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun("Receipt 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: receiptTabStops,
children: [ new TextRun({ text: "Item\tPrice\tQuantity\tSub-total", bold: true, }), ], }), new Paragraph({ tabStops: receiptTabStops, text: "Item 3\t10\t5\t50", }), new Paragraph({ tabStops: receiptTabStops, text: "Item 3\t10\t5\t50", }), new Paragraph({ tabStops: receiptTabStops, text: "Item 3\t10\t5\t50", }), new Paragraph({ tabStops: receiptTabStops, children: [ new TextRun({ text: "\t\t\tTotal: 200", bold: true, }), ], }), ], }, ],});
const stream = Packer.toStream(doc);stream.pipe(fs.createWriteStream("My Document.docx"));
Version Info