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();
            }
        }
    }
}
相關文章
相關標籤/搜索