Files
docx-js/src/file/templated-file.ts
2018-09-19 00:37:11 +01:00

53 lines
1.7 KiB
TypeScript

import { ITemplateDocument } from "../importDocx";
import { BaseFile } from "./base-file";
import { IPropertiesOptions } from "./core-properties";
import { Document, SectionPropertiesOptions } from "./document";
export class TemplatedFile extends BaseFile {
constructor(
templateDocument: ITemplateDocument,
options: IPropertiesOptions = {
creator: "Un-named",
revision: "1",
lastModifiedBy: "Un-named",
},
sectionPropertiesOptions: SectionPropertiesOptions = {},
) {
super(options);
this.currentRelationshipId = templateDocument.currentRelationshipId + 1;
this.addDefaultRelationships();
if (templateDocument.headers) {
for (const templateHeader of templateDocument.headers) {
this.addHeaderToDocument(templateHeader.header, templateHeader.type);
}
} else {
this.createHeader();
}
if (templateDocument.footers) {
for (const templateFooter of templateDocument.footers) {
this.addFooterToDocument(templateFooter.footer, templateFooter.type);
}
} else {
this.createFooter();
}
sectionPropertiesOptions = {
...sectionPropertiesOptions,
headers: this.headers.map((header) => ({
headerId: header.header.Header.ReferenceId,
headerType: header.type,
})),
footers: this.footers.map((footer) => ({
footerId: footer.footer.Footer.ReferenceId,
footerType: footer.type,
})),
};
this.document = new Document(sectionPropertiesOptions);
}
}