diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f68badca57f01e444ce01171b6aeb3415d8a7d3e..d7909ad7dfbbb330bcae4e6e5702caea830c37a9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,6 +28,7 @@ Build pythonForPandocFilter docker image:
         - generateChangemarks/changemarks.py
         - generateChangemarks/addTrackedChanges.py
         - generateChangemarks/generateTOC.py
+        - generateChangemarks/svg2png.py
 
 Build Pandoc docker image:
   stage: build
diff --git a/generateChangemarks/dockerfile b/generateChangemarks/dockerfile
index 5c80471ab54c9a69468631025c8b89507b47754b..020792e8ba789f50a2eaf71b8944e4d7b2661b81 100644
--- a/generateChangemarks/dockerfile
+++ b/generateChangemarks/dockerfile
@@ -2,6 +2,7 @@ FROM python:3.9-slim-bullseye
 
 ADD . /generateChangemarks/
 RUN apt-get update -y && \
+    apt-get install -y libcairo2 && \
     rm -rf /var/lib/apt/lists/* &&\
     pip install -e generateChangemarks/ &&\
 	pip install -r generateChangemarks/requirements.txt
diff --git a/generateChangemarks/dockerfile.pandoc b/generateChangemarks/dockerfile.pandoc
index bb9d0bfc5b8082187151ba9fa4e35cba95e5b3a3..54dae98615f4d677512748839f85f49171dc0802 100644
--- a/generateChangemarks/dockerfile.pandoc
+++ b/generateChangemarks/dockerfile.pandoc
@@ -1,4 +1,4 @@
-FROM pandoc/core:3-ubuntu
+FROM pandoc/core:3.4.0-ubuntu
 
 RUN apt-get update -y && \
     apt-get install -y npm &&\
diff --git a/generateChangemarks/pandocFilter.py b/generateChangemarks/pandocFilter.py
index 19294e3b2e1ed2ed0eeff7eed2d323a88cce31f5..23e6a254943651d40b1b5230f874c3923c6f5c54 100644
--- a/generateChangemarks/pandocFilter.py
+++ b/generateChangemarks/pandocFilter.py
@@ -127,6 +127,26 @@ def replaceFigureCaptions(progress:Progress, mdLines:list[str]) -> list[str]:
 	return _lines
 
 
+def replaceFiguresPathSvgToPng(progress: Progress, mdLines: list[str]) -> list[str]:
+	"""	Replace figure extensions from svg to png.
+	"""
+	_taskID = progress.add_task('[blue]Replacing figure captions', total=0)
+	# progress.update()
+	figurePathRegex = re.compile('media\/.*\.svg')
+
+	_lines: list[str] = []
+	for line in mdLines:
+		matches = re.findall(figurePathRegex, line)
+		if matches:
+			# Replace figure path to png
+			_lines.append(re.sub(r'\.svg', f'.png', line))
+		else:
+			_lines.append(line)
+
+	progress.stop_task(_taskID)
+	return _lines
+
+
 def replaceLineBreaks(progress: Progress, mdLines: list[str]) -> list[str]:
 	"""	Replace <br /> linebreaks by pandoc escaped_line_breaks extension \(newline).
 	"""
@@ -162,6 +182,7 @@ def process(document:str, outDirectory:str) -> None:
 		mdLines = correctTOC(progress, mdLines)
 		mdLines = replaceTableCaptions(progress, mdLines)
 		mdLines = replaceFigureCaptions(progress, mdLines)
+		mdLines = replaceFiguresPathSvgToPng(progress, mdLines)
 		mdLines = replaceLineBreaks(progress, mdLines)
 		writeMDFile(progress, mdLines, document, outDirectory)
 
diff --git a/generateChangemarks/requirements.txt b/generateChangemarks/requirements.txt
index 6aa5ec74dc2760809cc1b1be536a44863721b7a0..e993258c978b968c2503214a55c4aedd28d29260 100644
--- a/generateChangemarks/requirements.txt
+++ b/generateChangemarks/requirements.txt
@@ -15,4 +15,5 @@ pygments==2.15.1
 rich==13.4.2
     # via oneM2M-markdown-to-pandoc-filter (setup.py)
 requests==2.31.0
-unidiff==0.7.5
\ No newline at end of file
+unidiff==0.7.5
+cairosvg==2.7.1
\ No newline at end of file
diff --git a/generateChangemarks/setup.py b/generateChangemarks/setup.py
index 7353e00df3b56daac61aeaff67a4ac6641ab30ca..4d8e8ede8fc78b2e26622f083eba3b1fc53a4f6c 100644
--- a/generateChangemarks/setup.py
+++ b/generateChangemarks/setup.py
@@ -16,6 +16,7 @@ setup(
 								'changemarks=changemarks:main',
 								'addTrackedChanges=addTrackedChanges:main',
 								'generateTOC=generateTOC:main',
+								'svg2png=svg2png:main',
 			]
             }
 
diff --git a/generateChangemarks/svg2png.py b/generateChangemarks/svg2png.py
new file mode 100644
index 0000000000000000000000000000000000000000..5b0d0c3bb3c6d3eea42a0ee8431f0d22540d7901
--- /dev/null
+++ b/generateChangemarks/svg2png.py
@@ -0,0 +1,19 @@
+import argparse, sys
+import cairosvg
+import os
+
+def svg_to_png(input_svg_path, output_png_path):
+    cairosvg.svg2png(url=input_svg_path, write_to=output_png_path)
+
+# Example usage
+
+def main(args=None):
+	# Parse command line arguments
+	parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+	parser.add_argument('image',  help = 'image to convert')
+	args = parser.parse_args()
+
+	svg_to_png(args.image, f'{args.image.removesuffix(".svg")}.png')
+
+if __name__ == '__main__':
+    sys.exit(main())
\ No newline at end of file
diff --git a/publish_spec.sh b/publish_spec.sh
index faaa51e404ea8374193119063783d86e20201e82..70d912d664d1fb251f0061ebb63c3f8890df24d2 100755
--- a/publish_spec.sh
+++ b/publish_spec.sh
@@ -27,9 +27,14 @@ if [ ! $specs ] ; then
     exit 0
 fi
 
+for i in media/*.svg ; do
+  echo "\n------ Converting SVG to PNG for pandoc --------"
+	docker run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$TOOLS_DOCKER_IMAGE" svg2png "/tmp/$i"
+done
+
 for i in *.md ;  do
     if [ $i != 'README.md' ]; then
-        echo "\n------ Adding TOC to spec --------"
+      echo "\n------ Adding TOC to spec --------"
 	    docker run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$TOOLS_DOCKER_IMAGE" generateTOC --add-content "/tmp/$i"
 	    echo "\n------ Preparaing spec --------"
 	    docker run --rm -v $(pwd):/tmp/ -u $(id -u):$(id -g) "$TOOLS_DOCKER_IMAGE" pandocFilter -o "/tmp/" "/tmp/$i"