mp70-pptx-automizer
Version:
A template based pptx generator
71 lines • 3.86 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MediaHelper = void 0;
const file_helper_1 = require("./file-helper");
const xml_helper_1 = require("./xml-helper");
const path_1 = __importDefault(require("path"));
class MediaHelper {
static copyFiles(sourceArchive, targetArchive, sourceFile, targetFile) {
return __awaiter(this, void 0, void 0, function* () {
yield file_helper_1.FileHelper.zipCopy(sourceArchive, `ppt/media/${sourceFile}`, targetArchive, `ppt/media/${targetFile}`);
});
}
static appendTypes(targetArchive, targetFile, mediaType) {
return __awaiter(this, void 0, void 0, function* () {
const contentTypesPath = '[Content_Types].xml';
const contentTypesXml = yield xml_helper_1.XmlHelper.getXmlFromArchive(targetArchive, contentTypesPath);
const types = contentTypesXml.getElementsByTagName('Types')[0];
if (!types) {
throw new Error('Types element not found in [Content_Types].xml');
}
const partName = `/ppt/media/${targetFile}`;
const contentType = mediaType;
const newOverride = contentTypesXml.createElement('Override');
newOverride.setAttribute('PartName', partName);
newOverride.setAttribute('ContentType', contentType);
types.appendChild(newOverride);
console.log(`Content Type for ${targetFile}: ${contentType}`);
yield xml_helper_1.XmlHelper.writeXmlToArchive(targetArchive, contentTypesPath, contentTypesXml);
});
}
static appendToSlideRels(targetArchive, targetType, targetSlideNumber, targetFile, relationshipType) {
return __awaiter(this, void 0, void 0, function* () {
const targetRelFile = `ppt/${targetType}s/_rels/${targetType}${targetSlideNumber}.xml.rels`;
const createdRid = yield xml_helper_1.XmlHelper.getNextRelId(targetArchive, targetRelFile);
const attributes = {
Id: createdRid,
Type: relationshipType,
Target: `../media/${targetFile}`,
};
const createdRelation = yield xml_helper_1.XmlHelper.append(xml_helper_1.XmlHelper.createRelationshipChild(targetArchive, targetRelFile, attributes));
return { createdRid, createdRelation };
});
}
static getFileExtension(sourceFile) {
return file_helper_1.FileHelper.getFileExtension(sourceFile);
}
static generateTargetFile(targetNumber, sourceFile) {
return `media${targetNumber}${path_1.default.extname(sourceFile)}`;
}
static getElementsByRid(element, rid) {
if (!element || typeof element.getElementsByTagName !== 'function') {
return [];
}
const elements = element.getElementsByTagName('*');
return Array.from(elements).filter((el) => el.getAttribute('r:embed') === rid);
}
}
exports.MediaHelper = MediaHelper;
//# sourceMappingURL=media-helper.js.map