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(); } } } }