You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ma...@apache.org on 2011/03/21 13:43:58 UTC

svn commit: r1083764 - in /poi/trunk: src/ooxml/java/org/apache/poi/xwpf/model/ src/ooxml/java/org/apache/poi/xwpf/usermodel/ src/ooxml/testcases/org/apache/poi/xwpf/usermodel/ test-data/document/

Author: maxcom
Date: Mon Mar 21 12:43:58 2011
New Revision: 1083764

URL: http://svn.apache.org/viewvc?rev=1083764&view=rev
Log:
XWPF: support for pictures in headers

Added:
    poi/trunk/test-data/document/headerPic.docx   (with props)
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java?rev=1083764&r1=1083763&r2=1083764&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java Mon Mar 21 12:43:58 2011
@@ -107,9 +107,14 @@ public class XWPFHeaderFooterPolicy {
 			// Get the header
 			CTHdrFtrRef ref = sectPr.getHeaderReferenceArray(i);
 			PackagePart hdrPart = doc.getPartById(ref.getId());
-			HdrDocument hdrDoc = HdrDocument.Factory.parse(hdrPart.getInputStream());
-			CTHdrFtr hdrFtr = hdrDoc.getHdr();
-			XWPFHeader hdr = new XWPFHeader(doc, hdrFtr);
+
+            XWPFHeader hdr = null;
+
+            for (POIXMLDocumentPart part : doc.getRelations()) {
+                if (part.getPackagePart().getPartName().equals(hdrPart.getPartName())) {
+                    hdr = (XWPFHeader) part;
+                }
+            }
 
 			// Assign it
 			Enum type = ref.getType();

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java?rev=1083764&r1=1083763&r2=1083764&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java Mon Mar 21 12:43:58 2011
@@ -133,7 +133,6 @@ public class XWPFHeader extends XWPFHead
 		            }
 		        }
                 cursor.dispose();
-		        getAllPictures();
 			} catch (IOException e) {
 				// TODO Auto-generated catch block
 				e.printStackTrace();

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java?rev=1083764&r1=1083763&r2=1083764&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java Mon Mar 21 12:43:58 2011
@@ -64,7 +64,7 @@ public class XWPFPicture {
      */
     public XWPFPictureData getPictureData(){
     	String blipId = ctPic.getBlipFill().getBlip().getEmbed();
-    	for(POIXMLDocumentPart part: paragraph.getDocument().getRelations()){
+        for(POIXMLDocumentPart part: ((POIXMLDocumentPart) paragraph.getPart()).getRelations()){
     		  if(part.getPackageRelationship().getId().equals(blipId)){
     			  return (XWPFPictureData)part;
     		  }

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java?rev=1083764&r1=1083763&r2=1083764&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java Mon Mar 21 12:43:58 2011
@@ -34,16 +34,22 @@ public final class TestXWPFHeader extend
 
 		XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
 
-
 		XWPFHeader header = policy.getDefaultHeader();
 		XWPFFooter footer = policy.getDefaultFooter();
 		assertNotNull(header);
 		assertNotNull(footer);
+	}
 
-		// TODO verify if the following is correct
-		assertNull(header.toString());
+    public void testImageInHeader() {
+        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
 
-	}
+        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
+
+        XWPFHeader header = policy.getDefaultHeader();
+
+        assertNotNull(header.getRelations());
+        assertEquals(1, header.getRelations().size());
+    }
 
 	public void testSetHeader() throws IOException {
 		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java?rev=1083764&r1=1083763&r2=1083764&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java Mon Mar 21 12:43:58 2011
@@ -26,6 +26,7 @@ import org.apache.poi.openxml4j.exceptio
 import org.apache.poi.openxml4j.opc.PackageRelationship;
 import org.apache.poi.xssf.usermodel.XSSFRelation;
 import org.apache.poi.xwpf.XWPFTestDataSamples;
+import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
 
 public class TestXWPFPictureData extends TestCase {
 	   public void testRead(){
@@ -58,6 +59,16 @@ public class TestXWPFPictureData extends
 			}
 	    }
 
+        public void testPictureInHeader() {
+            XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
+            XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
+
+            XWPFHeader header = policy.getDefaultHeader();
+
+            List<XWPFPictureData> pictures = header.getAllPictures();
+            assertEquals(1, pictures.size());
+        }
+
 	    public void testNew() throws Exception {
 	        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx");
 	        byte[] jpegData = "test jpeg data".getBytes();

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java?rev=1083764&r1=1083763&r2=1083764&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java Mon Mar 21 12:43:58 2011
@@ -17,10 +17,12 @@
 package org.apache.poi.xwpf.usermodel;
 
 import java.math.BigInteger;
+import java.util.List;
 
 import junit.framework.TestCase;
 
 import org.apache.poi.xwpf.XWPFTestDataSamples;
+import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
@@ -326,4 +328,27 @@ public class TestXWPFRun extends TestCas
        assertEquals(false, run.isStrike());
        assertEquals(null, run.getCTR().getRPr());
     }
+
+    public void testPictureInHeader() {
+        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
+        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
+
+        XWPFHeader header = policy.getDefaultHeader();
+
+        int count = 0;
+
+        for (XWPFParagraph p : header.getParagraphs()) {
+            for (XWPFRun r : p.getRuns()) {
+                List<XWPFPicture> pictures = r.getEmbeddedPictures();
+
+                for (XWPFPicture pic : pictures) {
+                    assertNotNull(pic.getPictureData());
+                }
+
+                count+= pictures.size();
+            }
+        }
+
+        assertEquals(1, count);
+    }
 }

Added: poi/trunk/test-data/document/headerPic.docx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/document/headerPic.docx?rev=1083764&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/document/headerPic.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



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