Skip to content

Commit f3b17ab

Browse files
committed
chore(image): optionally add prefix on loadMedia to avoid naming conflicts
1 parent f4f7570 commit f3b17ab

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

__tests__/add-external-image.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ test('Load external media, add/modify image and set image target', async () => {
1414
const pres = automizer
1515
.loadRoot(`RootTemplate.pptx`)
1616
.loadMedia([`feather.png`, `test.png`])
17+
.loadMedia(`test.png`, `${__dirname}/../__tests__/media`, 'pre_')
1718
.load(`SlideWithShapes.pptx`, 'shapes')
1819
.load(`SlideWithImages.pptx`, 'images');
1920

@@ -29,7 +30,7 @@ test('Load external media, add/modify image and set image target', async () => {
2930

3031
pres.addSlide('images', 1, (slide) => {
3132
slide.modifyElement('Grafik 5', [
32-
ModifyImageHelper.setRelationTarget('test.png'),
33+
ModifyImageHelper.setRelationTarget('pre_test.png'),
3334
]);
3435
});
3536

src/automizer.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,11 @@ export default class Automizer implements IPresentationProps {
205205
* @param filename Filename or path to the media file.
206206
* @param dir Specify custom path for media instead of mediaDir from AutomizerParams.
207207
*/
208-
public loadMedia(filename: string | string[], dir?: string): this {
208+
public loadMedia(
209+
filename: string | string[],
210+
dir?: string,
211+
prefix?: string,
212+
): this {
209213
const files = GeneralHelper.arrayify(filename);
210214
if (!this.rootTemplate) {
211215
throw "Can't load media, you need to load a root template first";
@@ -226,6 +230,7 @@ export default class Automizer implements IPresentationProps {
226230
directory,
227231
filepath,
228232
extension,
233+
prefix,
229234
});
230235
});
231236
return this;
@@ -482,8 +487,12 @@ export default class Automizer implements IPresentationProps {
482487
*/
483488
public async writeMediaFiles(): Promise<void> {
484489
for (const file of this.rootTemplate.mediaFiles) {
485-
const archiveFilename = 'ppt/media/' + file.file;
486490
const data = fs.readFileSync(file.filepath);
491+
let archiveFilename = 'ppt/media/' + file.file;
492+
if (file.prefix) {
493+
archiveFilename = 'ppt/media/' + file.prefix + file.file;
494+
}
495+
487496
await this.rootTemplate.archive.write(archiveFilename, data);
488497
await XmlHelper.appendImageExtensionToContentType(
489498
this.rootTemplate.archive,

src/types/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ export type MediaFile = {
154154
file: string;
155155
directory: string;
156156
filepath: string;
157+
prefix?: string;
157158
extension: ContentTypeExtension;
158159
};
159160
export type TrackedFiles = Record<string, string[]>;

0 commit comments

Comments
 (0)