项目场景:
world替换填充内容
问题描述:
将world的内容保持原格式填充到新的world里面并转为pd
解决方案:
文件包下载 word模板替换工具以及使用说明
- 第一步
将wordreplace.zip解压 配置在服务器中的一个目录中
如: D:\test\wordreplace
- 第二步
准备需填充的word模板
如: D:\\test\\测试word填充文件.docx
第三步:生成数据源文件 需满足以下要求:
1:文件后缀名为 .json
2:文件需和word模板路径在同一个目录下
3:生成的.json文件名称要和填充文件名字一致
如下图:
第四步:cmd调用命令(测试程序附加最下方)。
D:\\test\\wordreplace\WordReplace.exe D:\\test\\测试word填充文件.docx
执行后自动转换pdf文件
转换说明:
可配置转换后的文件格式:
after://此项可以为空,如果为空的话,表示在相同目录下存同名pdf文件
1、文本可以存在表格、形状、普通段落中。
2、特别说明:
执行程序时候保证当前目录下无同名的pdf文件。应用程序不进行pdf删除操作。(如果有同名的会将原来的文件给替换掉!)
word 路径 exe 路径尽量不要拥有中文。
定义json格式key时候尽量用特殊字符开始和结束,避免和文件中文本产生冲突,如果 ${}。
word 安装2016以后版本,office 365 , wps 不支持。此office 支持得是服务上版本儿非个人电脑上版本。
测试代码。
public static void main(String[] args) throws Exception {
JSONObject filejson=new JSONObject();
String realPath = "D:/test/";
filejson.put("${name}", "填充测试");
filejson.put("${fawendate}", "2021年5月31日");
filejson.put("${type}", "万股苍穹");
filejson.put("${subject}", "寻仙问道许道长");
filejson.put("${content}", realPath+"测试替换文件.doc" );//测试文件路径
toJsonFile(filejson.toString());//生成.json文件
wordReplace(realPath+"填充文件.docx");//填充并生成PDF
}
public static void toJsonFile(String jsonStr){
String fullPath = "D://test//填充文件.json";// ***此处生成的附件名称要和填充的名称一致
try{
// 保证创建一个新文件
File file = new File(fullPath);
if (!file.getParentFile().exists()) {
// 如果父目录不存在,创建父目录
file.getParentFile().mkdirs();
}
if (file.exists()) {
// 如果已存在,删除旧文件
file.delete();
}
file.createNewFile();
// 将格式化后的字符串写入文件
Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
write.write(jsonStr);
write.flush();
write.close();
}catch (Exception e){
e.printStackTrace();
}
}
public static void wordReplace(String filePath)
{
Runtime rt = Runtime.getRuntime();
try {
String url = "D:/test/WordReplace.exe";
System.out.println(url);
String[] cmdArray = { url, filePath };
Process proc = rt.exec(cmdArray);
proc.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}