From 9c89c1ab596fd86541ec4a64eadcfa9792a239db Mon Sep 17 00:00:00 2001 From: fmuscolino Date: Fri, 12 Apr 2019 13:46:05 +0200 Subject: [PATCH] Update docs --- docs/usage/hyperlinks.md | 47 ++++++++++++++++++++++++++++++++++++ docs/usage/paragraph.md | 16 +++++++++++++ docs/usage/tables.md | 52 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 docs/usage/hyperlinks.md diff --git a/docs/usage/hyperlinks.md b/docs/usage/hyperlinks.md new file mode 100644 index 0000000000..82bfb366f9 --- /dev/null +++ b/docs/usage/hyperlinks.md @@ -0,0 +1,47 @@ +# Hyperlinks + +There are two types of hyperlinks: internal (pointing to a bookmark inside the document) and external (pointing to an external url). + +## Internal + +To create an internal hyperlink you need first to create a bookmark (the paragraph that will be the destination of the hyperlink) with `doc.createBookmark(anchor, text)`. + +A bookmark is composed of an anchor (an identifier) and the text displayed. After creating a bookmark just add it to a paragraph with `paragraph.addBookmark(bookmark)` + +For example: + +```ts +const paragraph = this.doc.createParagraph(); +const bookmark = this.doc.createBookmark('anchorForChapter1', 'This is chapter1'); +paragraph.addBookmark(bookmark); +``` + +Then you can create an hyperlink pointing to that bookmark with `doc.createInternalHyperLink(anchor,text)`: + +```ts +const paragraph = this.doc.createParagraph(); +const link = this.doc.createInternalHyperLink('anchorForChapter1', 'This is a link to chapter1'); +paragraph.addHyperLink(link); +``` + +## External + +To create an external hyperlink you just need to specify the url and the text of the link, then add it to a paragraph with `doc.createHyperlink(url, text)`: + +```ts +const paragraph = this.doc.createParagraph(); +const link = this.doc.createHyperlink('https://docx.js.org', 'This is an external link'); +paragraph.addHyperLink(link); +``` + + +## Styling an hyperlink + +It is possible to set the style of the text of an hyperlink. This can be done applying run formatting on `TextRun` property of the hyperlink. + +Example: + +```ts +const link = this.doc.createHyperlink('https://docx.js.org', 'This is an external link'); +link.TextRun.bold().italics() +``` diff --git a/docs/usage/paragraph.md b/docs/usage/paragraph.md index 6f3ee39ac5..0f9d90f412 100644 --- a/docs/usage/paragraph.md +++ b/docs/usage/paragraph.md @@ -76,6 +76,22 @@ paragraph.heading1().center(); The above will create a `heading 1` which is `centered`. +### Justified text with breaks + +When a paragraph is justified, you may want to not justify the contents of incomplete lines, which end in a soft line break. + +![Justified line before](https://user-images.githubusercontent.com/7989576/53820338-e060c680-3f6b-11e9-817c-ecb43271951e.png) + +This is possible to achieve using: + +```ts +this.doc.Settings.addCompatibility().doNotExpandShiftReturn() +``` + +The result is: + +![Justified line after](https://user-images.githubusercontent.com/7989576/53820344-e2c32080-3f6b-11e9-9afe-24a2ed6e0d78.png) + ## Thematic Break To add a break in the page, simply add `.thematicBreak()` on a paragraph: diff --git a/docs/usage/tables.md b/docs/usage/tables.md index 0a165cecf2..ed669cfd18 100644 --- a/docs/usage/tables.md +++ b/docs/usage/tables.md @@ -96,6 +96,28 @@ Once you have got the cell, you can add data to it with the `addParagraph()` met cell.addParagraph(new Paragraph("Hello")); ``` +### Set width of a cell + +You can specify the width of a cell using: + +`cell.Properties.setWidth(width, format)` + +format can be: +* WidthType.AUTO +* WidthType.DXA: value is in twentieths of a point +* WidthType.NIL: is considered as zero +* WidthType.PCT: percent of table width + +### Example + +```ts +cell.Properties.setWidth(100, WidthType.DXA); +``` + +```ts +cell.Properties.setWidth('50%', WidthType.PCT); +``` + ## Borders BorderStyle can be imported from `docx`. Size determines the thickness. HTML color can be a hex code or alias such as `red`. @@ -122,7 +144,18 @@ cell.Borders.addEndBorder([BorderStyle], [SIZE], [HTML COLOR]); import { BorderStyle } from "docx"; cell.Borders.addStartBorder(BorderStyle.DOT_DOT_DASH, 3, "green"); -cell.Borders.addStartBorder(BorderStyle.DOT_DOT_DASH, 3, "#ff8000"); +cell.Borders.addEndBorder(BorderStyle.DOT_DOT_DASH, 3, "#ff8000"); +``` + +### Google DOCS + +Google DOCS does not support start and end borders, instead they use left and right borders. So to set left and right borders for Google DOCS you should use: + +```ts +import { BorderStyle } from "docx"; + +cell.Borders.addLeftBorder(BorderStyle.DOT_DOT_DASH, 3, "green"); +cell.Borders.addRightBorder(BorderStyle.DOT_DOT_DASH, 3, "#ff8000"); ``` ## Set Width @@ -193,6 +226,23 @@ To have a table within a table cell.addTable(new Table(1, 1)); ``` +## Pagination + +###Prevent row pagination +To prevent breaking contents of a row across multiple pages, call `cantSplit()`: + +```ts +table.getRow(0).setCantSplit(); +``` + +###Repeat row +If a table is paginated on multiple pages, it is possible to repeat a row at the top of each new page calling `setTableHeader()`: + +```ts +table.getRow(0).setTableHeader(); +``` + + ## Examples [Example](https://raw.githubusercontent.com/dolanmiu/docx/master/demo/demo4.ts ':include')