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


转载于:https://my.oschina.net/u/1472917/blog/467750

Aspose.Words for .NET提供了将Word文档中的内容换为图片的功能,可以使用以下代码将Word文档换为图片并调整图片格式列宽: ```csharp // 加载Word文档 Document doc = new Document("input.docx"); // 创建ImageSaveOptions对象 ImageSaveOptions options = new ImageSaveOptions(SaveFormat.Png); // 设置图片格式列宽 options.HorizontalResolution = 200; options.VerticalResolution = 200; // 遍历文档中的每个页面,并将其换为图片 for (int pageIndex = 0; pageIndex < doc.PageCount; pageIndex++) { // 创建MemoryStream对象 MemoryStream stream = new MemoryStream(); // 将当前页面保存为图片 doc.Save(stream, options); // 加载图片 Image image = Image.FromStream(stream); // 调整图片格式列宽 int newWidth = image.Width * 2; int newHeight = image.Height * 2; // 创建新的Bitmap对象 Bitmap newBitmap = new Bitmap(newWidth, newHeight); // 创建Graphics对象 Graphics graphics = Graphics.FromImage(newBitmap); // 绘制图像 graphics.DrawImage(image, new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel); // 保存图片 newBitmap.Save("output.png", ImageFormat.Png); // 释放资源 stream.Dispose(); image.Dispose(); graphics.Dispose(); newBitmap.Dispose(); } ``` 在上述代码中,我们使用了ImageSaveOptions对象来设置生成的图片的格式,包括水平分辨率和垂直分辨率。然后,我们遍历文档中的每个页面,并将其换为图片。对于每个页面,我们先将其保存为MemoryStream对象,然后将其加载为Image对象。接着,我们根据需要调整图片的格式列宽,然后创建新的Bitmap对象,并使用Graphics对象将原始图像绘制到新的Bitmap对象中。最后,我们保存新的Bitmap对象为PNG格式的图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值