aspose-words-14.9.0-jdk16.jar
public static void exportWordImpl(Map<String,java.util.List<String>> ml,OutputStream out){
java.util.List<String> lhtml = ml.get("html");
java.util.List<String> limg = ml.get("img");
Document doc = null;
System.out.println("开始导出word");
try {
doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
int i =0;//取图片的位置
for(String str : lhtml){
if("glodon_paper_img".equals(str)){
Shape shape = new Shape(doc, ShapeType.IMAGE);
//图片位置与 图片集合的属于索引是对应的
//例如html元素中碰到第一个 glodon_paper_img 代表limg 第1个就是对应的图片
String imgName = limg.get(i);
System.out.println("导出word开始下载图片"+imgName);
byte[] b = AliOSSUtil.getInstance().download(imgName);//从服务器获取图片byte[]
if(b==null || b.length==0){
System.out.println("导出word下载图片,下载失败跳出");
continue;
}
shape.getImageData().setImageBytes(b);
System.out.println("导出word增加到word完成"+imgName);
shape.setWidth(350);
shape.setHeight(250);
shape.setHorizontalAlignment(HorizontalAlignment.LEFT);
//创建一个table,之前用过直接插入到第一个table的第一列里,发现如果文档中有table会插入位置错误
builder.startTable();
RowFormat rf = builder.getRowFormat();//行格式
BorderCollection border = rf.getBorders();//行的边线
border.setLineStyle(0);//0像素
rf.setHeight(260);//高度
builder.insertCell();//插入一列
builder.insertNode(shape);//把图片放进该列
builder.endRow();//结束行
builder.endTable();//结束table
System.out.println("图" + i + " 名称: " + imgName);
i++;
}else {
System.out.println("导出word html元素为"+str);
builder.insertHtml(str);
}
}
doc.save(out,SaveOptions.createSaveOptions(SaveFormat.DOC));
out.flush();
System.out.println("导出word结束");
}catch(Exception e){
System.out.println("导出word报错");
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
转载于:https://my.oschina.net/u/1472917/blog/467750