From c873abfe18beac7b2a621a7776b934ba02f9b30f Mon Sep 17 00:00:00 2001 From: Dolan Date: Tue, 30 Jan 2018 01:16:48 +0000 Subject: [PATCH] Fix referenceId +1 error and spelling mistakes Add demo --- demo/demo1.js | 2 +- demo/demo2.js | 2 ++ demo/demo3.js | 2 +- demo/demo4.js | 2 +- demo/demo6.js | 2 +- demo/demo7.js | 2 +- demo/demo8.js | 2 +- demo/demo9.js | 13 +++++++++++++ src/file/file.ts | 4 ++-- src/file/footer/footer.ts | 17 +++++++++++------ src/file/header/header.ts | 17 +++++++++++------ src/file/media/media.ts | 2 +- 12 files changed, 46 insertions(+), 21 deletions(-) create mode 100644 demo/demo9.js diff --git a/demo/demo1.js b/demo/demo1.js index dbada3a890..192ead1a31 100644 --- a/demo/demo1.js +++ b/demo/demo1.js @@ -13,4 +13,4 @@ doc.addParagraph(paragraph); var exporter = new docx.LocalPacker(doc); exporter.pack('My Document'); -console.log('Document created succesfully at project root!'); +console.log('Document created successfully at project root!'); diff --git a/demo/demo2.js b/demo/demo2.js index 9ae4ad8dc5..0e687ef920 100644 --- a/demo/demo2.js +++ b/demo/demo2.js @@ -70,3 +70,5 @@ para.createTextRun('and back to normal.'); const exporter = new docx.LocalPacker(doc); exporter.pack('My Document'); + +console.log('Document created successfully at project root!'); diff --git a/demo/demo3.js b/demo/demo3.js index e0606cad9c..55e22cc38a 100644 --- a/demo/demo3.js +++ b/demo/demo3.js @@ -32,4 +32,4 @@ doc.addParagraph(subSubP); var exporter = new docx.LocalPacker(doc); exporter.pack('My Document'); -console.log('Document created succesfully at project root!'); \ No newline at end of file +console.log('Document created successfully at project root!'); diff --git a/demo/demo4.js b/demo/demo4.js index 900e9a49c7..16b55c7f66 100644 --- a/demo/demo4.js +++ b/demo/demo4.js @@ -9,4 +9,4 @@ table.getCell(2, 2).addContent(new docx.Paragraph('Hello')); var exporter = new docx.LocalPacker(doc); exporter.pack('My Document'); -console.log('Document created succesfully at project root!'); \ No newline at end of file +console.log('Document created successfully at project root!'); diff --git a/demo/demo6.js b/demo/demo6.js index 232e954d92..704502225d 100644 --- a/demo/demo6.js +++ b/demo/demo6.js @@ -22,4 +22,4 @@ doc.createParagraph("5th Dec 2015"); var exporter = new docx.LocalPacker(doc); exporter.pack("My Document"); -console.log("Document created succesfully at project root!"); +console.log("Document created successfully at project root!"); diff --git a/demo/demo7.js b/demo/demo7.js index e9cf0a6fec..b56d0a1c1e 100644 --- a/demo/demo7.js +++ b/demo/demo7.js @@ -11,4 +11,4 @@ doc.addParagraph(paragraph); var exporter = new docx.LocalPacker(doc); exporter.pack("My Document"); -console.log("Document created succesfully at project root!"); +console.log("Document created successfully at project root!"); diff --git a/demo/demo8.js b/demo/demo8.js index 6df6d3e77e..11b5c26dc3 100644 --- a/demo/demo8.js +++ b/demo/demo8.js @@ -10,4 +10,4 @@ doc.Footer.createParagraph("Footer text"); var exporter = new docx.LocalPacker(doc); exporter.pack('My Document'); -console.log('Document created succesfully at project root!'); +console.log('Document created successfully at project root!'); diff --git a/demo/demo9.js b/demo/demo9.js new file mode 100644 index 0000000000..e70b526938 --- /dev/null +++ b/demo/demo9.js @@ -0,0 +1,13 @@ +const docx = require('../build'); + +var doc = new docx.File(); + +doc.createParagraph("Hello World"); + +doc.Header.createImage("./demo/images/pizza.gif"); +// doc.Footer.createImage("./demo/images/pizza.gif"); + +var exporter = new docx.LocalPacker(doc); +exporter.pack('My Document'); + +console.log('Document created successfully at project root!'); diff --git a/src/file/file.ts b/src/file/file.ts index a674a453b9..5811661ee7 100644 --- a/src/file/file.ts +++ b/src/file/file.ts @@ -38,8 +38,8 @@ export class File { this.numbering = new Numbering(); this.relationships = new Relationships(); this.media = new Media(); - this.header = new Header(); - this.footer = new Footer(); + this.header = new Header(this.media, this.relationships); + this.footer = new Footer(this.media, this.relationships); } public addParagraph(paragraph: Paragraph): void { diff --git a/src/file/footer/footer.ts b/src/file/footer/footer.ts index 6ec1df5abf..4ad6cbf392 100644 --- a/src/file/footer/footer.ts +++ b/src/file/footer/footer.ts @@ -1,12 +1,13 @@ // http://officeopenxml.com/WPfooters.php -import { IMediaData } from "file/media"; +import { IMediaData, Media } from "file/media"; +import { Relationships } from "file/relationships"; import { XmlComponent } from "file/xml-components"; import { Paragraph, PictureRun } from "../paragraph"; import { Table } from "../table"; import { FooterAttributes } from "./footer-attributes"; export class Footer extends XmlComponent { - constructor() { + constructor(private readonly media: Media, private readonly relationships: Relationships) { super("w:ftr"); this.root.push( new FooterAttributes({ @@ -58,9 +59,13 @@ export class Footer extends XmlComponent { this.root.push(paragraph); } - public createDrawing(imageData: IMediaData): void { - this.addDrawing(imageData); - - return; + public createImage(image: string): void { + const mediaData = this.media.addMedia(image, this.relationships.RelationshipCount); + this.relationships.createRelationship( + mediaData.referenceId, + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + `media/${mediaData.fileName}`, + ); + this.addDrawing(mediaData); } } diff --git a/src/file/header/header.ts b/src/file/header/header.ts index ee65a2bd5b..c2b759fbd2 100644 --- a/src/file/header/header.ts +++ b/src/file/header/header.ts @@ -1,12 +1,13 @@ // http://officeopenxml.com/WPheaders.php -import { IMediaData } from "file/media"; +import { IMediaData, Media } from "file/media"; +import { Relationships } from "file/relationships"; 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() { + constructor(private readonly media: Media, private readonly relationships: Relationships) { super("w:hdr"); this.root.push( new HeaderAttributes({ @@ -58,9 +59,13 @@ export class Header extends XmlComponent { this.root.push(paragraph); } - public createDrawing(imageData: IMediaData): void { - this.addDrawing(imageData); - - return; + public createImage(image: string): void { + const mediaData = this.media.addMedia(image, this.relationships.RelationshipCount); + this.relationships.createRelationship( + mediaData.referenceId, + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + `media/${mediaData.fileName}`, + ); + this.addDrawing(mediaData); } } diff --git a/src/file/media/media.ts b/src/file/media/media.ts index a244807599..5ac8905bc7 100644 --- a/src/file/media/media.ts +++ b/src/file/media/media.ts @@ -26,7 +26,7 @@ export class Media { const dimensions = sizeOf(filePath); const imageData = { - referenceId: this.map.size + relationshipsCount, + referenceId: this.map.size + relationshipsCount + 1, stream: fs.createReadStream(filePath), path: filePath, fileName: key,