概述
上一篇中我们介绍了如何使用 Apache POI Word API 绘制表格,本篇介绍如何使用 POI Word 向文档中插入图片。
插入图片
import org.apache.poi.common.usermodel.PictureType;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateDocPic {
public static void main(String[] args) throws IOException, InvalidFormatException {
try (XWPFDocument doc = new XWPFDocument()) {
try (FileOutputStream out = new FileOutputStream("D:\\tmp\\dogeDoc.docx")) {
XWPFParagraph p = doc.createParagraph();
XWPFRun run = p.createRun();
try (FileInputStream in = new FileInputStream("D:\\tmp\\doge.jpg")) {
run.addPicture(in, PictureType.JPEG, "doge", (int) (Units.EMU_PER_CENTIMETER * 5.54), (int) (Units.EMU_PER_CENTIMETER * 6.99));
doc.write(out);
}
}
}
}
}
插入图片的方法是 addPicture(InputStream pictureData, PictureType pictureType, String filename, int width, int height)
,值得一提的是,这里的宽高单位不是像素,而是 EMU,好在 org.apache.poi.util.Units 类中有一些实用方法可以转换不同的长度单位。
我这里希望插入的图片显示宽度是 5.54cm*6.99cm,Units 中的 Units.EMU_PER_CENTIMETER 表示一厘米有多少个 EMUs,因此需要将长度乘以 Units.EMU_PER_CENTIMETER。
生成的文档截图如下
有问题吗?点此反馈!
温馨提示:反馈需要登录