Page 1 of 1

Add SVG to Document

PostPosted: Wed Jul 01, 2020 4:56 am
by jhuettinger
Hi there,

is it possible to add a SVG image to a word document using docx4j without converting it into a png?

If I insert one via Word 2016, it automatically generates a png image in the document.docx/word/media folder. The document.xml looks like this:

Code: Select all
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="" xmlns:cx="" xmlns:cx1="" xmlns:cx2="" xmlns:cx3="" xmlns:cx4="" xmlns:cx5="" xmlns:cx6="" xmlns:cx7="" xmlns:cx8="" xmlns:mc="" xmlns:aink="" xmlns:am3d="" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="" xmlns:m="" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="" xmlns:wp="" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="" xmlns:w14="" xmlns:w15="" xmlns:w16cex="" xmlns:w16cid="" xmlns:w16="" xmlns:w16se="" xmlns:wpg="" xmlns:wpi="" xmlns:wne="" xmlns:wps="" mc:Ignorable="w14 w15 w16se w16cid w16 w16cex wp14">
      <w:p w14:paraId="521172BB" w14:textId="78124700" w:rsidR="007438CF" w:rsidRDefault="00AB26D8">
               <wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="703ACC19" wp14:editId="1AB4DA17">
                  <wp:extent cx="1552575" cy="514350"/>
                  <wp:effectExtent l="0" t="0" r="9525" b="0"/>
                  <wp:docPr id="1" name="Grafik 1"/>
                     <a:graphicFrameLocks xmlns:a="" noChangeAspect="1"/>
                  <a:graphic xmlns:a="">
                     <a:graphicData uri="">
                        <pic:pic xmlns:pic="">
                              <pic:cNvPr id="1" name=""/>
                              <a:blip r:embed="rId4">   <----------- REMOVE r:embed="rId4"
                                    <a:ext uri="{96DAC541-7B7A-43D3-8B79-37D633B846F1}">
                                       <asvg:svgBlip xmlns:asvg="" r:embed="rId5"/>
                                 <a:off x="0" y="0"/>
                                 <a:ext cx="1552575" cy="514350"/>
                              <a:prstGeom prst="rect">
      <w:sectPr w:rsidR="007438CF">
         <w:pgSz w:w="11906" w:h="16838"/>
         <w:pgMar w:top="1417" w:right="1417" w:bottom="1134" w:left="1417" w:header="708" w:footer="708" w:gutter="0"/>
         <w:cols w:space="708"/>
         <w:docGrid w:linePitch="360"/>

If I remove
Code: Select all
and delete the png in document.docx/word/media, Word still renders the SVG correctly and doesn't add the png file again.

So is there a way to do this programmatically with docx4j without needing to convert the SVG?
If not, is it possible to provide the fallback png with batik instead of ImageMagick? How would I do this in this case?

Thank you,