docxtemplater/es6/file-type-config.js
2021-09-04 10:15:02 +05:00

136 lines
2.6 KiB
JavaScript

"use strict";
const loopModule = require("./modules/loop");
const spacePreserveModule = require("./modules/space-preserve");
const rawXmlModule = require("./modules/rawxml");
const expandPairTrait = require("./modules/expand-pair-trait");
const render = require("./modules/render");
const PptXFileTypeConfig = {
getTemplatedFiles(zip) {
const slideTemplates = zip
.file(/ppt\/(slideMasters)\/(slideMaster)\d+\.xml/)
.map(function (file) {
return file.name;
});
return slideTemplates.concat([
"ppt/presentation.xml",
"docProps/app.xml",
"docProps/core.xml",
]);
},
textPath() {
return "ppt/slides/slide1.xml";
},
tagsXmlTextArray: [
"Company",
"HyperlinkBase",
"Manager",
"cp:category",
"cp:keywords",
"dc:creator",
"dc:description",
"dc:subject",
"dc:title",
"a:t",
"m:t",
"vt:lpstr",
],
tagsXmlLexedArray: [
"p:sp",
"a:tc",
"a:tr",
"a:table",
"a:p",
"a:r",
"a:rPr",
"p:txBody",
"a:txBody",
],
expandTags: [{ contains: "a:tc", expand: "a:tr" }],
onParagraphLoop: [{ contains: "a:p", expand: "a:p", onlyTextInTag: true }],
tagRawXml: "p:sp",
tagTextXml: "a:t",
baseModules: [loopModule, expandPairTrait, rawXmlModule, render],
tagShouldContain: [
{ tag: "p:txBody", shouldContain: ["a:p"], value: "<a:p></a:p>" },
{ tag: "a:txBody", shouldContain: ["a:p"], value: "<a:p></a:p>" },
],
};
const DocXFileTypeConfig = {
getTemplatedFiles(zip) {
const baseTags = [
"docProps/core.xml",
"docProps/app.xml",
"word/settings.xml",
];
const headerFooters = zip
.file(/word\/(header|footer)\d+\.xml/)
.map(function (file) {
return file.name;
});
return headerFooters.concat(baseTags);
},
textPath(doc) {
return doc.targets[0];
},
tagsXmlTextArray: [
"Company",
"HyperlinkBase",
"Manager",
"cp:category",
"cp:keywords",
"dc:creator",
"dc:description",
"dc:subject",
"dc:title",
"w:t",
"m:t",
"vt:lpstr",
],
tagsXmlLexedArray: [
"w:proofState",
"w:tc",
"w:tr",
"w:table",
"w:p",
"w:r",
"w:br",
"w:rPr",
"w:pPr",
"w:spacing",
"w:sdtContent",
"w:sectPr",
"w:headerReference",
"w:footerReference",
],
expandTags: [{ contains: "w:tc", expand: "w:tr" }],
onParagraphLoop: [{ contains: "w:p", expand: "w:p", onlyTextInTag: true }],
tagRawXml: "w:p",
tagTextXml: "w:t",
baseModules: [
loopModule,
spacePreserveModule,
expandPairTrait,
rawXmlModule,
render,
],
tagShouldContain: [
{ tag: "w:tc", shouldContain: ["w:p"], value: "<w:p></w:p>" },
{
tag: "w:sdtContent",
shouldContain: ["w:p", "w:r"],
value: "<w:p></w:p>",
},
],
};
module.exports = {
docx: DocXFileTypeConfig,
pptx: PptXFileTypeConfig,
};