I\'ve created a simple docx-Document, using Java POI 3.7. XWPF. Then, I added a picture by
using the Method XWPFDocument.addpicture(byte[] arg0, int arg1). >
Because XWPFRun.addPicture does not work (it damage xdoc file) i manage to picture like this:
private void addPicture(final String fileName, final int id, int width, int height, final XWPFRun run)
{
FileInputStream fileInputStream = null;
try
{
fileInputStream = new FileInputStream("/home/maq/ebworkspace/TeamForge_Tools/" + fileName);
final String blipId = run.getDocument().addPictureData(fileInputStream, Document.PICTURE_TYPE_JPEG);
final int EMU = 9525;
width *= EMU;
height *= EMU;
//String blipId = getAllPictures().get(id).getPackageRelationship().getId();
final CTInline inline = run.getCTR().addNewDrawing().addNewInline();
final String picXml = "" + ""
+ " " + " "
+ " " + " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " "
+ " " + " " + " ";
//CTGraphicalObjectData graphicData = inline.addNewGraphic().addNewGraphicData();
XmlToken xmlToken = null;
xmlToken = XmlToken.Factory.parse(picXml);
inline.set(xmlToken);
//graphicData.set(xmlToken);
inline.setDistT(0);
inline.setDistB(0);
inline.setDistL(0);
inline.setDistR(0);
final CTPositiveSize2D extent = inline.addNewExtent();
extent.setCx(width);
extent.setCy(height);
final CTNonVisualDrawingProps docPr = inline.addNewDocPr();
docPr.setId(id);
docPr.setName("Picture " + id);
docPr.setDescr("Generated");
}
catch (final Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
//close streams
if (fileInputStream != null)
{
try
{
fileInputStream.close();
}
catch (final IOException ioEx)
{
//can be ignored
}
}
}
}
And running example:
addPicture(filePath, xdoc.getNextPicNameNumber(Document.PICTURE_TYPE_JPEG), 100, 50, xRun);