From 118ae457ddac7a116825f45718b748497731d385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9mence=20Fernandez?= Date: Tue, 16 Sep 2025 15:24:27 +0200 Subject: [PATCH] Add pictures in manifest.xml to fix corrupted file --- scripts/odf/templating/fillOdtTemplate.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/odf/templating/fillOdtTemplate.js b/scripts/odf/templating/fillOdtTemplate.js index 49d128d..63aea42 100644 --- a/scripts/odf/templating/fillOdtTemplate.js +++ b/scripts/odf/templating/fillOdtTemplate.js @@ -11,7 +11,7 @@ lockdown(); /** @import {Reader, ZipWriterAddDataOptions} from '@zip.js/zip.js' */ -/** @import {ODFManifest} from '../manifest.js' */ +/** @import {ODFManifest, ODFManifestFileEntry} from '../manifest.js' */ /** @import {OdfjsImage} from '../../types.js' */ /** @typedef {ArrayBuffer} ODTFile */ @@ -66,6 +66,8 @@ export default async function fillOdtTemplate(odtTemplate, data) { /** @type {{filename: string, content: Reader, options?: ZipWriterAddDataOptions}[]} */ const zipEntriesToAdd = [] + /** @type {ODFManifestFileEntry[]} */ + const newManifestEntries = [] /** * Return href @@ -74,11 +76,10 @@ export default async function fillOdtTemplate(odtTemplate, data) { */ function addImageToOdtFile(odfjsImage) { // console.log({odfjsImage}) - const fileName = `Pictures/${odfjsImage.fileName}` - zipEntriesToAdd.push({content: new Uint8ArrayReader(new Uint8Array(odfjsImage.content)), filename: fileName}) - return fileName - - + const filename = `Pictures/${odfjsImage.fileName}` + zipEntriesToAdd.push({content: new Uint8ArrayReader(new Uint8Array(odfjsImage.content)), filename}) + newManifestEntries.push({fullPath: filename, mediaType: odfjsImage.mediaType}) + return filename } // Parcourir chaque entrée du fichier ODT @@ -156,6 +157,9 @@ export default async function fillOdtTemplate(odtTemplate, data) { } } + for(const {fullPath, mediaType} of newManifestEntries){ + manifestFileData.fileEntries.set(fullPath, {fullPath, mediaType}) + } for(const {filename, content, options} of zipEntriesToAdd) { await writer.add(filename, content, options);