From 950a2f8b5376aee0e794520c610e3e3e91c0d91d Mon Sep 17 00:00:00 2001 From: Dolan Date: Sun, 28 Jan 2018 22:32:51 +0000 Subject: [PATCH] Add header class --- src/file/header/header-attributes.ts | 31 ++++++++++++++ src/file/header/header.ts | 61 ++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/file/header/header-attributes.ts create mode 100644 src/file/header/header.ts diff --git a/src/file/header/header-attributes.ts b/src/file/header/header-attributes.ts new file mode 100644 index 0000000000..e893306192 --- /dev/null +++ b/src/file/header/header-attributes.ts @@ -0,0 +1,31 @@ +import { XmlAttributeComponent } from "file/xml-components"; + +export interface IHeaderAttributesProperties { + o?: string; + r?: string; + v?: string; + w?: string; + w10?: string; + wp?: string; + wps?: string; + wpg?: string; + mc?: string; + wp14?: string; + w14?: string; +} + +export class HeaderAttributes extends XmlAttributeComponent { + protected xmlKeys = { + o: "xmlns:o", + r: "xmlns:r", + v: "xmlns:v", + w: "xmlns:w", + w10: "xmlns:w10", + wp: "xmlns:wp", + wps: "xmlns:wps", + wpg: "xmlns:wpg", + mc: "xmlns:mc", + wp14: "xmlns:wp14", + w14: "xmlns:w14", + }; +} diff --git a/src/file/header/header.ts b/src/file/header/header.ts new file mode 100644 index 0000000000..8e2c37fe2d --- /dev/null +++ b/src/file/header/header.ts @@ -0,0 +1,61 @@ +// http://officeopenxml.com/WPheaders.php +import { IMediaData } from "file/media"; +import { XmlComponent } from "file/xml-components"; +import { Paragraph, PictureRun } from "../paragraph"; +import { Table } from "../table"; +import { HeaderAttributes } from "./header-attributes"; + +export class Header extends XmlComponent { + constructor() { + super("w:hdr"); + this.root.push( + new HeaderAttributes({ + o: "urn:schemas-microsoft-com:office:office", + r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + v: "urn:schemas-microsoft-com:vml", + w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + w10: "urn:schemas-microsoft-com:office:word", + wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", + wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", + mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", + wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", + w14: "http://schemas.microsoft.com/office/word/2010/wordml", + }), + ); + } + + public addParagraph(paragraph: Paragraph): void { + this.root.push(paragraph); + } + + public createParagraph(text?: string): Paragraph { + const para = new Paragraph(text); + this.addParagraph(para); + return para; + } + + public addTable(table: Table): void { + this.root.push(table); + } + + public createTable(rows: number, cols: number): Table { + const table = new Table(rows, cols); + this.addTable(table); + return table; + } + + public addDrawing(imageData: IMediaData): void { + const paragraph = new Paragraph(); + const run = new PictureRun(imageData); + paragraph.addRun(run); + + this.root.push(paragraph); + } + + public createDrawing(imageData: IMediaData): void { + this.addDrawing(imageData); + + return; + } +}