三分钟带你实现Word内容和图片插入和替换

你知道的越多,你不知道的越多
点赞再看,养成习惯
如果您有疑问或者见解,或者没有积分想获取项目和定制项目,欢迎指教:
企鹅:869192208

前言
目前遇到一个需求,客户需要在一份 word 通知书上,使用手写板签名后,将签名图片插入到 word 通知书的指定位置。

针对这个需求,正好之前使用过 Aspose.Words 这个工具项目,直接使用它提供的方法就能完成 word 文档内容和图片的插入和替换。

aspose-words-19.5等三个版本合集

实现思路一:

通过书签替换:
先定义一个书签,然后在书签的位置填进去相应的数据或图片,具体操作。

  1. 先在word上插入->书签->定义书签名
  2. 在程序中载入模板文件
  3. 找到模板文件定义的书签
  4. 将内容填充到书签的位置
实现思路二:

通过页面关键字替换:
不需要定义书签,但是需要模板有固定的关键字,通过找到模板的关键字,对其进行内容替换或者图片替换。

  1. 保证 word 模板有固定的关键字
  2. 找到指定的关键字
  3. 对关键字进行内容和图片的替换
优缺点分析

思路一:
优点

  • 不需要内容有固定的关键字
  • 可以重复多次替换同一个位置的内容

缺点

  • 需要预先定义书签,并且记录书签名

思路二:
优点

  • 不需要定义书签

缺点

  • 不能重复在同一个位置更新内容
具体实现

创建一个测试类Demo1

package xymy.WordInsertPic;

import com.aspose.pdf.SaveFormat;
import com.aspose.words.*;
import jdk.nashorn.internal.runtime.regexp.joni.Regex;
import sun.net.www.content.image.png;

import java.util.regex.Pattern;

public class Demo1 {
    public static void main(String[] args) throws Exception {
        //载入word文档
        Document doc = new Document("E:/111.docx");
        DocumentBuilder builder = new DocumentBuilder(doc);

        //第一种:插入书签的方式
        builder.moveToBookmark("l_001");//跳转到书签名是l_001的位置
        builder.write("https://blog.csdn.net/CDWLX");//书签处要插入的文字
        builder.moveToBookmark("l_002");//跳转到书签名是l_002的位置
        builder.insertImage("D:/111.png");//书签处要插入的图片
        doc.save("D:/New_File.docx");//重新渲染生成word文件

        //第二种:插入字符替换的方式
        doc.getRange().replace(Pattern.compile("银行卡"), "https://blog.csdn.net/CDWLX");//将指定内容位置的内容替换成新的文字,这个指定内容,需要传正则表达式
        doc.getRange().replace(Pattern.compile("测试"), new ReplaceAndInsertImage("D:/111.png"), false);//将指定内容位置的内容替换成新的图片,这个指定内容,需要传正则表达式
        doc.save("D:/New_File_02.docx");//重新渲染生成word文件
    }
}

创建 IReplacingCallback 的实现类

package xymy.WordInsertPic;

import com.aspose.words.*;
import lombok.Data;

@Data
public class ReplaceAndInsertImage implements IReplacingCallback {

    private String url;

    public ReplaceAndInsertImage(String url)
    {
        this.url = url;
    }

    @Override
    public int replacing(ReplacingArgs e) throws Exception {
        //获取当前节点
        Node node = e.getMatchNode();
        //获取当前文档
        Document doc = (Document)node.getDocument();
        DocumentBuilder builder = new DocumentBuilder(doc);
        //将光标移动到指定节点
        builder.moveTo(node);
        //插入图片
        builder.insertImage(url);
        return ReplaceAction.REPLACE;
    }
}

运行效果
  • 模板
    配置word模板

  • 书签方式替换效果
    书签替换效果

  • 关键字方式替换效果
    关键字替换效果

参考资料:

  1. .Net 使用 Aspose.Words 进行 Word替换操作
  2. Aspose.Words对于Word的操作
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值