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