How do i write/paste a captured image to a doc file?
Solution 1:
Using ImageIO.write(screenShot, "JPG", baos);
the image is there but it is a little bit small because the measurement unit is not pixel but EMU (English Metric Unit). There is a org.apache.poi.util.Units
which can convert pixels to EMUs.
The following does work for me:
import java.io.*;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class CreateWordPictureScreenshot {
public static void main(String[] args) throws Exception {
XWPFDocument document= new XWPFDocument();
String resulttext = "The Screenshot:";
Robot robot = new Robot();
BufferedImage screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//ImageIO.write(screenShot, "JPG", new File("NEW1.JPG"));
ImageIO.write(screenShot, "JPG", baos);
baos.flush();
InputStream is = new ByteArrayInputStream(baos.toByteArray());
baos.close();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText(resulttext);
run.addPicture(is, XWPFDocument.PICTURE_TYPE_JPEG, "new", Units.toEMU(72*6), Units.toEMU(72*6/16*9));
is.close();
FileOutputStream out = new FileOutputStream("CreateWordPictureScreenshot.docx");
document.write(out);
out.close();
document.close();
}
}