aspose.words导出html 转word文档带图片,(无网络也可以看图)

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


你可能感兴趣的:(word,aspose.words,html转word,word导出图片)