I am trying to create a document with header with image and paragraph as
footer.I am able to create header and also footer with POI, i am using
HeaderFooterPolicy for this purpose.But the problem is that Footer is coming
in proper place but my header with image is coming at the body of the
document.I am posting the code i am using for this purpose.
public class CreateWordDoc {
public static void main (String[] args) throws Exception {
//XWPFDocument document = new XWPFDocument();
CustomXWPFDocument document = new CustomXWPFDocument(new
FileInputStream(new File("D:\\test.docx")));
CTP ctp = CTP.Factory.newInstance();
CTR ctr = ctp.addNewR();
CTRPr rpr = ctr.addNewRPr();
CTText textt = ctr.addNewT();
textt.setStringValue( " Client Service
Contact:[email protected]" );
XWPFParagraph codePara = new XWPFParagraph( ctp, document );
XWPFParagraph imagePara = new XWPFParagraph(ctp, document);
XWPFParagraph[] newparagraphs = new XWPFParagraph[1];
newparagraphs[0] = codePara;
XWPFParagraph[] imaheparagraphs = new XWPFParagraph[1];
imaheparagraphs[0]=imagePara;
String blipId = document.addPictureData(new FileInputStream(new
File("D:\\msh.jpg")), Document.PICTURE_TYPE_JPEG);
CTSectPr sectPr =
document.getDocument().getBody().addNewSectPr();
XWPFHeaderFooterPolicy headerFooterPolicy = new
XWPFHeaderFooterPolicy(
document, sectPr );
document.createPicture(blipId,document.getNextPicNameNumber(Document.PICTURE_TYPE_JPEG),
400, 129);
headerFooterPolicy.createHeader(
STHdrFtr.FIRST,imaheparagraphs);
//headerFooterPolicy.createFooter( STHdrFtr.DEFAULT,
newparagraphs );
FileOutputStream out = new FileOutputStream("D:\\test.docx");
document.write(out);
System.out.println("Doc Created");
}
}
public class CustomXWPFDocument extends XWPFDocument
{
public CustomXWPFDocument(FileInputStream in) throws IOException
{
super(in);
}
public void createPicture(String blipId,int id, int width, int height)
{
final int EMU = 9525;
width *= EMU;
height *= EMU;
//String blipId =
getAllPictures().get(id).getPackageRelationship().getId();
CTInline inline =
createParagraph().createRun().getCTR().addNewDrawing().addNewInline();
String picXml = "" +
"<a:graphic
xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">" +
" <a:graphicData
uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" +
" <pic:pic
xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">" +
" <pic:nvPicPr>" +
" <pic:cNvPr id=\"" + id +
"\" name=\"Generated\"/>" +
" <pic:cNvPicPr/>" +
" </pic:nvPicPr>" +
" <pic:blipFill>" +
" <a:blip r:embed=\"" + blipId +
"\"
xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"
+
" <a:stretch>" +
" <a:fillRect/>" +
" </a:stretch>" +
" </pic:blipFill>" +
" <pic:spPr>" +
" <a:xfrm>" +
" <a:off x=\"0\" y=\"0\"/>" +
" <a:ext cx=\"" + width +
"\" cy=\"" + height + "\"/>" +
" </a:xfrm>" +
" <a:prstGeom prst=\"rect\">" +
" <a:avLst/>" +
" </a:prstGeom>" +
" </pic:spPr>" +
" </pic:pic>" +
" </a:graphicData>" +
"</a:graphic>";
//CTGraphicalObjectData graphicData =
inline.addNewGraphic().addNewGraphicData();
XmlToken xmlToken = null;
try
{
xmlToken = XmlToken.Factory.parse(picXml);
}
catch(XmlException xe)
{
xe.printStackTrace();
}
inline.set(xmlToken);
//graphicData.set(xmlToken);
inline.setDistT(0);
inline.setDistB(0);
inline.setDistL(0);
inline.setDistR(0);
CTPositiveSize2D extent = inline.addNewExtent();
extent.setCx(width);
extent.setCy(height);
CTNonVisualDrawingProps docPr = inline.addNewDocPr();
docPr.setId(id);
docPr.setName("Picture " + id);
docPr.setDescr("Generated");
}
}
<http://apache-poi.1045710.n5.nabble.com/file/n5717440/screen.png>
--
View this message in context:
http://apache-poi.1045710.n5.nabble.com/Header-with-image-is-coming-at-the-body-of-the-document-tp5717440.html
Sent from the POI - Dev mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]