This commit is contained in:
amitm02
2018-08-29 18:36:48 +03:00
parent a710483918
commit 010fde6258
17 changed files with 140 additions and 12 deletions

View File

@ -11,6 +11,8 @@ export interface IPropertiesOptions {
lastModifiedBy?: string;
revision?: string;
externalStyles?: string;
templateHeader? : XmlComponent;
}
export class CoreProperties extends XmlComponent {

View File

@ -14,6 +14,7 @@ import { Styles } from "./styles";
import { ExternalStylesFactory } from "./styles/external-styles-factory";
import { DefaultStylesFactory } from "./styles/factory";
import { Table } from "./table";
import { XmlComponent } from "./xml-components";
export class File {
private readonly document: Document;
@ -71,7 +72,7 @@ export class File {
);
this.media = new Media();
const header = this.createHeader();
const header = this.createHeader(options.templateHeader);
const footer = this.createFooter();
this.fileRelationships = new Relationships();
@ -169,8 +170,10 @@ export class File {
this.footNotes.createFootNote(paragraph);
}
public createHeader(): HeaderWrapper {
const header = new HeaderWrapper(this.media, this.currentRelationshipId++);
public createHeader(templateHeader? : XmlComponent): HeaderWrapper {
const header = new HeaderWrapper(this.media, this.currentRelationshipId++, templateHeader);
console.log('\n\n-------\n\n');
console.log('header', JSON.stringify(header.Header, null, 2));
this.headerWrapper.push(header);
this.docRelationships.createRelationship(
header.Header.ReferenceId,

View File

@ -5,12 +5,13 @@ import { ImageParagraph, Paragraph } from "./paragraph";
import { Relationships } from "./relationships";
import { Table } from "./table";
export class HeaderWrapper {
private readonly header: Header;
private readonly relationships: Relationships;
constructor(private readonly media: Media, referenceId: number) {
this.header = new Header(referenceId);
constructor(private readonly media: Media, referenceId: number, initContent? : XmlComponent) {
this.header = new Header(referenceId, initContent);
this.relationships = new Relationships();
}

View File

@ -7,10 +7,11 @@ import { HeaderAttributes } from "./header-attributes";
export class Header extends XmlComponent {
private readonly refId: number;
constructor(referenceNumber: number) {
super("w:hdr");
constructor(referenceNumber: number, initContent? : XmlComponent) {
super("w:hdr", initContent);
this.refId = referenceNumber;
this.root.push(
new HeaderAttributes({
wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",

View File

@ -3,11 +3,17 @@ import { IXmlableObject } from "./xmlable-object";
export { BaseXmlComponent };
export abstract class XmlComponent extends BaseXmlComponent {
protected root: Array<BaseXmlComponent | string>;
public root: Array<BaseXmlComponent | string>;
constructor(rootKey: string) {
constructor(rootKey: string, initContent? : XmlComponent) {
super(rootKey);
this.root = new Array<BaseXmlComponent>();
this.root = initContent ? initContent.root : new Array<BaseXmlComponent>();
if (initContent) {
console.log('\n\n-------\n\n');
console.log('new root', JSON.stringify(initContent, null,2));
console.log('\n\n-------\n\n');
}
}
public prepForXml(): IXmlableObject {

View File

@ -0,0 +1,27 @@
import * as JSZip from "jszip";
import * as fastXmlParser from "fast-xml-parser";
import { convertToXmlComponent, parseOptions, ImportedXmlComponent } from "file/xml-components";
export class ImportDocx {
constructor() {
}
read(data) : Promise<any> {
return new Promise((resolve) => {
JSZip.loadAsync(data).then((zipContent) => {
let headerContent = zipContent['files']['word/header2.xml'];
headerContent.async('text').then((xmlData : string) => {
console.log('\n\n-------\n\n');
console.log('headerContent', JSON.stringify(xmlData, null, 2));
console.log('\n\n-------\n\n');
const jsonObj = fastXmlParser.parse(xmlData, parseOptions);
let xmlComp = convertToXmlComponent('w:hdr', jsonObj['w:hdr']) as ImportedXmlComponent;
resolve(xmlComp);
})
});
})
}
}

1
src/importDocx/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './importDocx';

BIN
src/importDocx/simple.dotx Normal file

Binary file not shown.

Binary file not shown.

View File

@ -3,3 +3,5 @@
export { File as Document } from "./file";
export * from "./file";
export * from "./export";
export * from "./importDocx";