You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2010/09/14 20:50:10 UTC

svn commit: r997037 - in /poi/trunk/src/ooxml: java/org/apache/poi/util/OOXMLLite.java java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java java/org/apache/poi/xwpf/usermodel/XWPFRun.java testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java

Author: nick
Date: Tue Sep 14 18:50:10 2010
New Revision: 997037

URL: http://svn.apache.org/viewvc?rev=997037&view=rev
Log:
Various XWPF picture tweaks and more unit tests
Note that XWPFRun -> XWPFPicture currently only works with the full ooxml schemas file, and not with poi-ooxml-schemas, due to some sort of missing resources around the namespace switch

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/util/OOXMLLite.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/util/OOXMLLite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/util/OOXMLLite.java?rev=997037&r1=997036&r2=997037&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/util/OOXMLLite.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/util/OOXMLLite.java Tue Sep 14 18:50:10 2010
@@ -129,10 +129,9 @@ public final class OOXMLLite {
         JarFile jar = new  JarFile(_ooxmlJar);
         for(Enumeration<JarEntry> e = jar.entries(); e.hasMoreElements(); ){
             JarEntry je = e.nextElement();
-            if(je.getName().matches("schemaorg_apache_xmlbeans/system/\\w+/\\w+\\.xsb")){
-                File destFile = new File(_destDest, je.getName());
-                //System.out.println(je.getName() + "  -->  " + destFile);
-                copyFile(jar.getInputStream(je), destFile);
+            if(je.getName().matches("schemaorg_apache_xmlbeans/system/\\w+/\\w+\\.xsb")) {
+                 File destFile = new File(_destDest, je.getName());
+                 copyFile(jar.getInputStream(je), destFile);
             }
         }
         jar.close();

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java?rev=997037&r1=997036&r2=997037&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java Tue Sep 14 18:50:10 2010
@@ -93,6 +93,18 @@ public class XWPFPictureData extends POI
     }
     
     /**
+     * Returns the file name of the image, eg image7.jpg .
+     * The original filename isn't always available, but if it
+     *  can be found it's likely to be in the CTDrawing 
+     */
+    public String getFileName() {
+       String name = getPackagePart().getPartName().getName();
+       if(name == null)
+          return null;
+       return name.substring(name.lastIndexOf('/') + 1);
+    }
+    
+    /**
      * Suggests a file extension for this image.
      *
      * @return the file extension.
@@ -123,6 +135,4 @@ public class XWPFPictureData extends POI
         }
         return 0;
     }
-    
-    
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java?rev=997037&r1=997036&r2=997037&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java Tue Sep 14 18:50:10 2010
@@ -26,6 +26,7 @@ import org.apache.poi.util.Internal;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlString;
+import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTEmpty;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
@@ -94,9 +95,10 @@ public class XWPFRun {
                  .selectPath("declare namespace pic='http://schemas.openxmlformats.org/drawingml/2006/picture' .//pic:pic");
            for(XmlObject pict : picts) {
               if(pict instanceof org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture) {
-                 pictures.add(new XWPFPicture(
+                 XWPFPicture picture = new XWPFPicture(
                        (org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture)pict, p
-                 ));
+                 );
+                 pictures.add(picture);
               }
            }
         }

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java?rev=997037&r1=997036&r2=997037&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java Tue Sep 14 18:50:10 2010
@@ -38,6 +38,9 @@ import org.openxmlformats.schemas.wordpr
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment;
+import        org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture;
+import org.openxmlformats.schemas.drawingml.x2006.picture.PicDocument;
+import org.openxmlformats.schemas.drawingml.x2006.picture.impl.PicDocumentImpl;
 
 /**
  * Tests for XWPF Paragraphs
@@ -250,6 +253,74 @@ public final class TestXWPFParagraph ext
     }
     
     public void testPictures() throws Exception {
-       // TODO
+       XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx");
+       assertEquals(7, doc.getParagraphs().size());
+       
+       XWPFParagraph p;
+       XWPFRun r;
+
+       // Text paragraphs
+       assertEquals("Sheet with various pictures", doc.getParagraphs().get(0).getText());
+       assertEquals("(jpeg, png, wmf, emf and pict) ", doc.getParagraphs().get(1).getText());
+       
+       // Spacer ones
+       assertEquals("", doc.getParagraphs().get(2).getText());
+       assertEquals("", doc.getParagraphs().get(3).getText());
+       assertEquals("", doc.getParagraphs().get(4).getText());
+       
+       // Image one
+       p = doc.getParagraphs().get(5);
+       assertEquals(6, p.getRuns().size());
+
+       r = p.getRuns().get(0);
+       assertEquals("", r.toString());
+       assertEquals(1, r.getEmbeddedPictures().size());
+       assertNotNull(r.getEmbeddedPictures().get(0).getPictureData());
+       assertEquals("image1.wmf", r.getEmbeddedPictures().get(0).getPictureData().getFileName());
+
+       r = p.getRuns().get(1);
+       assertEquals("", r.toString());
+       assertEquals(1, r.getEmbeddedPictures().size());
+       assertNotNull(r.getEmbeddedPictures().get(0).getPictureData());
+       assertEquals("image2.png", r.getEmbeddedPictures().get(0).getPictureData().getFileName());
+
+       r = p.getRuns().get(2);
+       assertEquals("", r.toString());
+       assertEquals(1, r.getEmbeddedPictures().size());
+       assertNotNull(r.getEmbeddedPictures().get(0).getPictureData());
+       assertEquals("image3.emf", r.getEmbeddedPictures().get(0).getPictureData().getFileName());
+
+       r = p.getRuns().get(3);
+       assertEquals("", r.toString());
+       assertEquals(1, r.getEmbeddedPictures().size());
+       assertNotNull(r.getEmbeddedPictures().get(0).getPictureData());
+       assertEquals("image4.emf", r.getEmbeddedPictures().get(0).getPictureData().getFileName());
+
+       r = p.getRuns().get(4);
+       assertEquals("", r.toString());
+       assertEquals(1, r.getEmbeddedPictures().size());
+       assertNotNull(r.getEmbeddedPictures().get(0).getPictureData());
+       assertEquals("image5.jpeg", r.getEmbeddedPictures().get(0).getPictureData().getFileName());
+       
+       r = p.getRuns().get(5);
+       assertEquals(" ", r.toString());
+       assertEquals(0, r.getEmbeddedPictures().size());
+       
+       // Final spacer
+       assertEquals("", doc.getParagraphs().get(6).getText());
+       
+       
+       // Look in detail at one
+       r = p.getRuns().get(4);
+       XWPFPicture pict = r.getEmbeddedPictures().get(0);
+       CTPicture picture = pict.getCTPicture();
+       assertEquals("rId8", picture.getBlipFill().getBlip().getEmbed());
+       
+       // Ensure that the ooxml compiler finds everything we need
+       r.getCTR().getDrawingArray(0);
+       r.getCTR().getDrawingArray(0).getInlineArray(0);
+       r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic();
+       r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic().getGraphicData();
+       PicDocument pd = new PicDocumentImpl(null);
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org