From 34036bca8f262da572d0140b454040dbe7f2a0fc Mon Sep 17 00:00:00 2001 From: Matt Powell Date: Mon, 27 Sep 2021 19:11:09 -0700 Subject: [PATCH 1/4] Add suppressLineNumber option to Paragraph --- src/file/paragraph/properties.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/file/paragraph/properties.ts b/src/file/paragraph/properties.ts index bb055bc893..515d626b0c 100644 --- a/src/file/paragraph/properties.ts +++ b/src/file/paragraph/properties.ts @@ -52,6 +52,7 @@ export interface IParagraphPropertiesOptions extends IParagraphStylePropertiesOp readonly shading?: IShadingAttributesProperties; readonly widowControl?: boolean; readonly frame?: IFrameOptions; + readonly suppressLineNumbers?: boolean; } export class ParagraphProperties extends IgnoreIfEmptyXmlComponent { @@ -166,6 +167,10 @@ export class ParagraphProperties extends IgnoreIfEmptyXmlComponent { if (options.outlineLevel !== undefined) { this.push(new OutlineLevel(options.outlineLevel)); } + + if (options.suppressLineNumbers !== undefined) { + this.push(new OnOffElement("w:suppressLineNumbers", options.suppressLineNumbers)); + } } public push(item: XmlComponent): void { From ea01ddb3376fc793d1f922961bf13edf50550721 Mon Sep 17 00:00:00 2001 From: Matt Powell Date: Mon, 27 Sep 2021 19:18:58 -0700 Subject: [PATCH 2/4] Update Paragraph/properties.ts with supressLineNumber docs --- src/file/paragraph/properties.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/file/paragraph/properties.ts b/src/file/paragraph/properties.ts index 515d626b0c..8b09819233 100644 --- a/src/file/paragraph/properties.ts +++ b/src/file/paragraph/properties.ts @@ -1,4 +1,5 @@ // http://officeopenxml.com/WPparagraphProperties.php +// https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_suppressLineNumbers_topic_ID0ECJAO.html import { IContext, IgnoreIfEmptyXmlComponent, IXmlableObject, OnOffElement, XmlComponent } from "file/xml-components"; import { DocumentWrapper } from "../document-wrapper"; import { IShadingAttributesProperties, Shading } from "../shading"; From f77ddb4037a6db89d18db23922ec24a6622ad584 Mon Sep 17 00:00:00 2001 From: Matt Powell Date: Tue, 28 Sep 2021 12:21:51 -0700 Subject: [PATCH 3/4] Add tests for suppressLineNumbers --- demo/70-line-numbers-suppression.ts | 37 ++++++++++++++++++++++++++++ src/file/paragraph/paragraph.spec.ts | 12 +++++++++ 2 files changed, 49 insertions(+) create mode 100644 demo/70-line-numbers-suppression.ts diff --git a/demo/70-line-numbers-suppression.ts b/demo/70-line-numbers-suppression.ts new file mode 100644 index 0000000000..4a76067d5a --- /dev/null +++ b/demo/70-line-numbers-suppression.ts @@ -0,0 +1,37 @@ +// Example demonstrating line numbers. +// Import from 'docx' rather than '../build' if you install from npm +import * as fs from "fs"; +import { Document, HeadingLevel, LineNumberRestartFormat, Packer, Paragraph } from "../build"; + +const doc = new Document({ + sections: [ + { + properties: { + lineNumbers: { + countBy: 1, + restart: LineNumberRestartFormat.CONTINUOUS, + }, + }, + children: [ + new Paragraph({ + text: "Hello", + heading: HeadingLevel.HEADING_1, + }), + new Paragraph( + "Himenaeos duis luctus nullam fermentum lobortis potenti vivamus non dis, sed facilisis ultricies scelerisque aenean risus hac senectus. Adipiscing id venenatis justo ante gravida placerat, ac curabitur dis pellentesque proin bibendum risus, aliquam porta taciti vulputate primis. Tortor ipsum fermentum quam vel convallis primis nisl praesent tincidunt, lobortis quisque felis vitae condimentum class ut sem nam, aenean potenti pretium ac amet lacinia himenaeos mi. Aliquam nisl turpis hendrerit est morbi malesuada, augue interdum mus inceptos curabitur tristique, parturient feugiat sodales nulla facilisi. Aliquam non pulvinar purus nulla ex integer, velit faucibus vitae at bibendum quam, risus elit aenean adipiscing posuere.", + ), + new Paragraph({ + text: 'Enim mollit nostrud ut dolor eiusmod id sit occaecat dolore culpa amet. Veniam dolor consequat dolor labore ullamco laborum dolore eiusmod qui adipisicing. Elit nulla cupidatat et magna. Id eiusmod tempor non laborum ipsum. Veniam et aliqua excepteur duis officia enim elit excepteur fugiat duis. Sit sunt ullamco non dolor est qui deserunt consequat magna. Esse pariatur esse dolor ut excepteur dolor nisi nisi non est cupidatat mollit.', + suppressLineNumbers: true + }), + new Paragraph( + "Sed laoreet id mattis egestas nam mollis elit lacinia convallis dui tincidunt ultricies habitant, pharetra per maximus interdum neque tempor risus efficitur morbi imperdiet senectus. Lectus laoreet senectus finibus inceptos donec potenti fermentum, ultrices eleifend odio suscipit magnis tellus maximus nibh, ac sit nullam eget felis himenaeos. Diam class sem magnis aenean commodo faucibus id proin mi, nullam sodales nec mus parturient ornare ad inceptos velit hendrerit, bibendum placerat eleifend integer facilisis urna dictumst suspendisse.", + ), + ], + }, + ], +}); + +Packer.toBuffer(doc).then((buffer) => { + fs.writeFileSync("My Document.docx", buffer); +}); diff --git a/src/file/paragraph/paragraph.spec.ts b/src/file/paragraph/paragraph.spec.ts index ab06d59ac1..0adbde7df4 100644 --- a/src/file/paragraph/paragraph.spec.ts +++ b/src/file/paragraph/paragraph.spec.ts @@ -830,6 +830,18 @@ describe("Paragraph", () => { }); }); + describe("#suppressLineNumbers", () => { + it("should disable line numbers", () => { + const paragraph = new Paragraph({ + suppressLineNumbers: true, + }); + const tree = new Formatter().format(paragraph); + expect(tree).to.deep.equal({ + "w:p": [{ "w:pPr": [{ "w:suppressLineNumbers": EMPTY_OBJECT }] }], + }); + }); + }); + describe("#outlineLevel", () => { it("should set paragraph outline level to the given value", () => { const paragraph = new Paragraph({ From 3c768c563040cc6388f067931597c219defd0ee9 Mon Sep 17 00:00:00 2001 From: Matt Powell Date: Tue, 28 Sep 2021 12:22:59 -0700 Subject: [PATCH 4/4] Update 70-line-numbers-suppression.ts --- demo/70-line-numbers-suppression.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/70-line-numbers-suppression.ts b/demo/70-line-numbers-suppression.ts index 4a76067d5a..3fc0cbef74 100644 --- a/demo/70-line-numbers-suppression.ts +++ b/demo/70-line-numbers-suppression.ts @@ -1,4 +1,4 @@ -// Example demonstrating line numbers. +// Example demonstrating line numbers with suppression. // Import from 'docx' rather than '../build' if you install from npm import * as fs from "fs"; import { Document, HeadingLevel, LineNumberRestartFormat, Packer, Paragraph } from "../build";