Author: fanningpj
Date: Wed Mar 27 13:33:57 2024
New Revision: 1916582

URL: http://svn.apache.org/viewvc?rev=1916582&view=rev
Log:
[github-607] Support SVGs in XWPF. Thanks to Etienne Gautier. This closes #607

Modified:
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/Document.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
    poi/trunk/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/Document.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/Document.java?rev=1916582&r1=1916581&r2=1916582&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/Document.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/Document.java 
Wed Mar 27 13:33:57 2024
@@ -74,4 +74,9 @@ public interface Document {
      * WordPerfect graphics (.wpg)
      */
     public static final int PICTURE_TYPE_WPG = PictureType.WPG.ooxmlId;
+
+    /**
+     * SVG graphics (.svg)
+     */
+    public static final int PICTURE_TYPE_SVG = PictureType.SVG.ooxmlId;
 }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java?rev=1916582&r1=1916581&r2=1916582&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
 Wed Mar 27 13:33:57 2024
@@ -58,7 +58,7 @@ public class XWPFPictureData extends POI
     protected static final POIXMLRelation[] RELATIONS;
 
     static {
-        RELATIONS = new POIXMLRelation[14];
+        RELATIONS = new POIXMLRelation[15];
         RELATIONS[PictureType.EMF.ooxmlId] = XWPFRelation.IMAGE_EMF;
         RELATIONS[PictureType.WMF.ooxmlId] = XWPFRelation.IMAGE_WMF;
         RELATIONS[PictureType.PICT.ooxmlId] = XWPFRelation.IMAGE_PICT;
@@ -71,6 +71,7 @@ public class XWPFPictureData extends POI
         RELATIONS[PictureType.BMP.ooxmlId] = XWPFRelation.IMAGE_BMP;
         RELATIONS[PictureType.WPG.ooxmlId] = XWPFRelation.IMAGE_WPG;
         RELATIONS[PictureType.WDP.ooxmlId] = XWPFRelation.HDPHOTO_WDP;
+        RELATIONS[PictureType.SVG.ooxmlId] = XWPFRelation.IMAGE_SVG;
     }
 
     private Long checksum;
@@ -149,6 +150,7 @@ public class XWPFPictureData extends POI
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_GIF
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_DIB
+     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_SVG
      * @see #getPictureTypeEnum()
      */
     public int getPictureType() {

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java?rev=1916582&r1=1916581&r2=1916582&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
 Wed Mar 27 13:33:57 2024
@@ -234,6 +234,12 @@ public final class XWPFRelation extends
             "/ppt/media/hdphoto#.wdp",
             XWPFPictureData::new, XWPFPictureData::new
     );
+    public static final XWPFRelation IMAGE_SVG = new XWPFRelation(
+        PictureType.SVG.contentType,
+        IMAGE_PART,
+        "/word/media/image#.svg",
+        XWPFPictureData::new, XWPFPictureData::new
+);
     public static final XWPFRelation IMAGES = new XWPFRelation(
             null,
             IMAGE_PART,

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java?rev=1916582&r1=1916581&r2=1916582&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
Wed Mar 27 13:33:57 2024
@@ -1207,6 +1207,7 @@ public class XWPFRun implements ISDTCont
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_GIF
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_DIB
+     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_SVG
      * @see #addPicture(InputStream, PictureType, String, int, int)
      */
     public XWPFPicture addPicture(InputStream pictureData, int pictureType, 
String filename, int width, int height)

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java?rev=1916582&r1=1916581&r2=1916582&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java
 Wed Mar 27 13:33:57 2024
@@ -191,11 +191,12 @@ public final class TestXWPFDocument {
             doc.addPictureData(new byte[18], Document.PICTURE_TYPE_EPS);
             doc.addPictureData(new byte[19], Document.PICTURE_TYPE_BMP);
             doc.addPictureData(new byte[20], Document.PICTURE_TYPE_WPG);
+            doc.addPictureData(new byte[21], Document.PICTURE_TYPE_SVG);
 
-            assertEquals(11, doc.getAllPictures().size());
+            assertEquals(12, doc.getAllPictures().size());
 
             try (XWPFDocument doc2 = 
XWPFTestDataSamples.writeOutAndReadBack(doc)) {
-                assertEquals(11, doc2.getAllPictures().size());
+                assertEquals(12, doc2.getAllPictures().size());
             }
         }
     }

Modified: 
poi/trunk/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java?rev=1916582&r1=1916581&r2=1916582&view=diff
==============================================================================
--- 
poi/trunk/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java 
(original)
+++ 
poi/trunk/poi/src/main/java/org/apache/poi/common/usermodel/PictureType.java 
Wed Mar 27 13:33:57 2024
@@ -53,7 +53,7 @@ public enum PictureType {
     /** Microsoft Windows Media Photo image (.wdp) */
     WDP("image/vnd.ms-photo", ".wdp", 13),
     /** Scalable vector graphics (.svg) - supported by Office 2016 and higher 
*/
-    SVG("image/svg+xml", ".svg", -1),
+    SVG("image/svg+xml", ".svg", 14),
     /** Unknown picture type - specific to escher bse record */
     UNKNOWN("", ".dat", -1),
     /** Picture type error - specific to escher bse record */



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to