Add a draw image and a draw frame into odt file

This commit is contained in:
Clémence Fernandez 2025-09-15 17:59:06 +02:00
parent 69d146defd
commit b0fe1d8987
2 changed files with 23 additions and 1 deletions

View File

@ -801,6 +801,24 @@ export default function fillOdtElementTemplate(rootElements, compartment, addIma
console.log({imageMarker}, "dans le if imageMarker") console.log({imageMarker}, "dans le if imageMarker")
if (imageMarker.odfjsImage) { if (imageMarker.odfjsImage) {
const href = addImageToOdtFile(imageMarker.odfjsImage) const href = addImageToOdtFile(imageMarker.odfjsImage)
const newImageNode = currentNode.ownerDocument?.createElement("draw:image")
newImageNode.setAttribute("xlink:href", href)
newImageNode.setAttribute("xlink:type", "simple")
newImageNode.setAttribute("xlink:show", "embed")
newImageNode.setAttribute("xlink:actuate", "onLoad")
newImageNode.setAttribute("draw:mime-type", imageMarker.odfjsImage.mediaType)
const newFrameNode = currentNode.ownerDocument?.createElement('draw:frame')
newFrameNode.setAttribute("text:anchor-type", "char")
newFrameNode.setAttribute("svg:width", "7.28cm")
newFrameNode.setAttribute("svg:height", "10.239cm")
newFrameNode.setAttribute("draw:z-index", "0")
newFrameNode.appendChild(newImageNode)
currentNode.parentNode?.replaceChild(newFrameNode, currentNode)
// TODO : // TODO :
// - Rajouter un fichier image dans le odt avec le ArrayBuffer comme contenu (ou autre type) // - Rajouter un fichier image dans le odt avec le ArrayBuffer comme contenu (ou autre type)
// - puis remplacer le texte par peut-être <draw:image et peut-être <draw:frame et peut être pas ici // - puis remplacer le texte par peut-être <draw:image et peut-être <draw:frame et peut être pas ici

View File

@ -74,7 +74,11 @@ export default async function fillOdtTemplate(odtTemplate, data) {
*/ */
function addImageToOdtFile(odfjsImage) { function addImageToOdtFile(odfjsImage) {
// console.log({odfjsImage}) // console.log({odfjsImage})
zipEntriesToAdd.push({content: new Uint8ArrayReader(new Uint8Array(odfjsImage.content)), filename: `Pictures/${odfjsImage.fileName}`}) const fileName = `Pictures/${odfjsImage.fileName}`
zipEntriesToAdd.push({content: new Uint8ArrayReader(new Uint8Array(odfjsImage.content)), filename: fileName})
return fileName
} }
// Parcourir chaque entrée du fichier ODT // Parcourir chaque entrée du fichier ODT