XWPF: support for pictures in headers
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1083764 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1ba16fb3b9
commit
8d72b9137a
@ -107,9 +107,14 @@ public class XWPFHeaderFooterPolicy {
|
|||||||
// Get the header
|
// Get the header
|
||||||
CTHdrFtrRef ref = sectPr.getHeaderReferenceArray(i);
|
CTHdrFtrRef ref = sectPr.getHeaderReferenceArray(i);
|
||||||
PackagePart hdrPart = doc.getPartById(ref.getId());
|
PackagePart hdrPart = doc.getPartById(ref.getId());
|
||||||
HdrDocument hdrDoc = HdrDocument.Factory.parse(hdrPart.getInputStream());
|
|
||||||
CTHdrFtr hdrFtr = hdrDoc.getHdr();
|
XWPFHeader hdr = null;
|
||||||
XWPFHeader hdr = new XWPFHeader(doc, hdrFtr);
|
|
||||||
|
for (POIXMLDocumentPart part : doc.getRelations()) {
|
||||||
|
if (part.getPackagePart().getPartName().equals(hdrPart.getPartName())) {
|
||||||
|
hdr = (XWPFHeader) part;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Assign it
|
// Assign it
|
||||||
Enum type = ref.getType();
|
Enum type = ref.getType();
|
||||||
|
@ -133,7 +133,6 @@ public class XWPFHeader extends XWPFHeaderFooter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
cursor.dispose();
|
cursor.dispose();
|
||||||
getAllPictures();
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -64,7 +64,7 @@ public class XWPFPicture {
|
|||||||
*/
|
*/
|
||||||
public XWPFPictureData getPictureData(){
|
public XWPFPictureData getPictureData(){
|
||||||
String blipId = ctPic.getBlipFill().getBlip().getEmbed();
|
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)){
|
if(part.getPackageRelationship().getId().equals(blipId)){
|
||||||
return (XWPFPictureData)part;
|
return (XWPFPictureData)part;
|
||||||
}
|
}
|
||||||
|
@ -34,17 +34,23 @@ public final class TestXWPFHeader extends TestCase {
|
|||||||
|
|
||||||
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
|
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
|
||||||
|
|
||||||
|
|
||||||
XWPFHeader header = policy.getDefaultHeader();
|
XWPFHeader header = policy.getDefaultHeader();
|
||||||
XWPFFooter footer = policy.getDefaultFooter();
|
XWPFFooter footer = policy.getDefaultFooter();
|
||||||
assertNotNull(header);
|
assertNotNull(header);
|
||||||
assertNotNull(footer);
|
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 {
|
public void testSetHeader() throws IOException {
|
||||||
XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
|
XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
|
||||||
// no header is set (yet)
|
// no header is set (yet)
|
||||||
|
@ -26,6 +26,7 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|||||||
import org.apache.poi.openxml4j.opc.PackageRelationship;
|
import org.apache.poi.openxml4j.opc.PackageRelationship;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFRelation;
|
import org.apache.poi.xssf.usermodel.XSSFRelation;
|
||||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
||||||
|
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
|
||||||
|
|
||||||
public class TestXWPFPictureData extends TestCase {
|
public class TestXWPFPictureData extends TestCase {
|
||||||
public void testRead(){
|
public void testRead(){
|
||||||
@ -58,6 +59,16 @@ public class TestXWPFPictureData extends TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
public void testNew() throws Exception {
|
||||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx");
|
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx");
|
||||||
byte[] jpegData = "test jpeg data".getBytes();
|
byte[] jpegData = "test jpeg data".getBytes();
|
||||||
|
@ -17,10 +17,12 @@
|
|||||||
package org.apache.poi.xwpf.usermodel;
|
package org.apache.poi.xwpf.usermodel;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
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.CTBr;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
|
||||||
@ -326,4 +328,27 @@ public class TestXWPFRun extends TestCase {
|
|||||||
assertEquals(false, run.isStrike());
|
assertEquals(false, run.isStrike());
|
||||||
assertEquals(null, run.getCTR().getRPr());
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
test-data/document/headerPic.docx
Normal file
BIN
test-data/document/headerPic.docx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user