public static void main(String[] args) throws Exception { String testFile = "testdata/test.docx"; String targetFile = "testdata/test_c.docx"; String image = "./testdata/Desert.jpg"; InputStream is = null; OutputStream os = null; try { is = new FileInputStream(testFile); os = new FileOutputStream(targetFile); CustomXWPFDocument doc = new CustomXWPFDocument(is); int count = 0; for( XWPFParagraph para : doc.getParagraphs()){ List runs = para.getRuns(); for( XWPFRun run : runs ){ List drawings = run.getCTR().getDrawingList(); int size = drawings.size(); for( int i = 0 ; i < size ; i++ ){ CTPositiveSize2D ps2d = drawings.get(0).getInlineList().get(0).getExtent(); String blipId = addPictureData(image, doc); doc.createPicture(run.getCTR(), blipId, doc.getNextPicNameNumber(XWPFDocument.PICTURE_TYPE_PNG), ps2d.getCx(), ps2d.getCy()); run.getCTR().removeDrawing(0); count++; } } } doc.write(os); System.out.println("Replace " + count + " image(s)."); } finally { Cleaner.close(is); Cleaner.close(os); } } private static String addPictureData(String image, CustomXWPFDocument doc) throws FileNotFoundException, InvalidFormatException { InputStream images = null; try { images = new FileInputStream(image); return doc.addPictureData(images, XWPFDocument.PICTURE_TYPE_JPEG); } finally { Cleaner.close(images); } }