asposeword.dll通过word模板生成word、PDF
效果图
1、word模板(部分)书签
2、生成结果图
开始上代码
Dictionary<string, string> dictSource = new Dictionary<string, string>();
dictSource = FlowCommon.FlowFun.NCRDocDic(FlowModel); //获取文字替换数据
string docFIlePath = SetNCRDocImg(FlowModel, dictSource);//替换签名图片及文字内容,返回生成的word文件路径
string path = Server.MapPath("~" + docFIlePath);
FlowCommon.NPIOHelper.WordToPDF(path + "NCR.docx", path, "NCR");//根据word生成PDF
文字标签数据
public static Dictionary<string, string> NCRDocDic(Model.View_NCRFlowList FlowModel)
{
Dictionary<string, string> dictSource = new Dictionary<string, string>();
try
{
dictSource.Add("zlgly_psjb", FlowModel.zlgly_psjb);//评审级别
dictSource.Add("zlgly_bh", FlowModel.zlgly_bh);//编号
dictSource.Add("jcy_mcth", FlowModel.jcy_mcth);//不合格品名称及图号
dictSource.Add("jcy_fsdw", FlowModel.jcy_fsdw);//发生单位
dictSource.Add("jcy_cpbh", FlowModel.jcy_cpbh);//产品编号
dictSource.Add("jcy_fslb", FlowModel.jcy_fslb);//不合格品发生类别
...
}
catch (Exception e)
{
Log.Write(tabLog, e.ToString());
dictSource = null;
}
return dictSource;
}
/// <summary>
/// NCR文档图片设置
/// </summary>
/// <param name="FlowModel"></param>
/// <param name="dictSource"></param>
/// <param name="IsGD"></param>
public string SetNCRDocImg(Model.View_NCRFlowList FlowModel, Dictionary<string, string> dictSource, bool IsGD = true)
{
string docFIlePath = "";
string templateFile = Server.MapPath("~/Templates/NCR.docx");
Aspose.Words.Document doc = new Aspose.Words.Document(templateFile);//读取模板
DocumentBuilder builder = new DocumentBuilder(doc);
//检查员
string jcy = FlowModel.jcy_jcy;
DataTable dt_jcy = FlowCommon.FlowFun.GetUserSignImg(jcy, "1"); //签名图片获取
ReplaceImg(dt_jcy, "jcy_jcy", dictSource, builder);
//质量管理员--判断等级
string zlgly = FlowModel.zlgly_zlgly;
DataTable dt_zlgly = FlowCommon.FlowFun.GetUserSignImg(zlgly, "2");
ReplaceImg(dt_zlgly, "zlgly_zlgly", dictSource, builder);
//使用文本方式替换
foreach (string name in dictSource.Keys)
{
doc.Range.Replace(name, dictSource[name].Replace("\r\n", ""), true, true);
}
string SaveFile = "";
if (IsGD) //默认归档操作,归档与打印文件保存路径不同
docFIlePath = "/upload/NCRFiles/" + FlowModel.zlgly_bh + "/";
else
docFIlePath = "/upload/PrintFiles/" + DateTime.Now.Ticks.ToString() + "/";
SaveFile = Server.MapPath("~" + docFIlePath);
if (!Directory.Exists(SaveFile))
{
Directory.CreateDirectory(SaveFile);
}
doc.Save(SaveFile + "NCR.docx");
return docFIlePath;
}
/// <summary>
/// 签名图片替换
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="name">标签名称</param>
/// <param name="dictSource"></param>
/// <param name="builder"></param>
/// <param name="IsMul">是否为多图片</param>
private void ReplaceImg(DataTable dt, string name, Dictionary<string, string> dictSource, DocumentBuilder builder, bool IsMul = false)
{
if (dt != null && dt.Rows.Count > 0) //查到数据了
{
if (!IsMul)
{
string url = dt.Rows[0]["signurl"].ToString();
//PHOTO_jcy
string imgurl = Server.MapPath("~" + url);
FileInfo fileInfo = new FileInfo(imgurl);
if (fileInfo.Exists)
{
builder.MoveToBookmark("PHOTO_" + name);
builder.InsertImage(imgurl, RelativeHorizontalPosition.Default, -5, RelativeVerticalPosition.Margin, 0, 45, 18, WrapType.None);
dictSource[name] = ""; //签名图片存在时清空文字标签内容
}
}
else //客户需求有多人签名,在同一个表单框中,最多现在三个签名,这里根据自己的业务需求来
{
int i = 1;
foreach (DataRow dr in dt.Rows)
{
if (i > 3) break;
string url = dr["signurl"].ToString();
//PHOTO_jcy
string imgurl = Server.MapPath("~" + url);
FileInfo fileInfo = new FileInfo(imgurl);
if (fileInfo.Exists)
{
builder.MoveToBookmark("PHOTO_" + name + i.ToString());
builder.InsertImage(imgurl, RelativeHorizontalPosition.Default, -5, RelativeVerticalPosition.Margin, 0, 45, 18, WrapType.Square);
dictSource[name] = ""; //
}
i++;
}
}
}
}
/// <summary>
/// Word转成Pdf
/// </summary>
/// <param name="path">要转换的文档的路径</param>
/// <param name="savePath">转换成Pdf的保存路径</param>
/// <param name="wordFileName">转换成html的文件名字</param>
public static void WordToPDF(string path, string savePath, string wordFileName)
{
Aspose.Words.Document d = new Aspose.Words.Document(path);
d.Save(savePath + wordFileName + ".pdf", SaveFormat.Pdf);
}
asposeword.dll通过word模板生成word、PDF相关推荐
- 根据word模板生成word和PDF
根据word模板生成word和PDF 需求:有一个固定的合同模板,在vue前台填写指定的信息,替换合同模板指定的内容 我们使用的默认模板内容如图: 我们在前端填写的字段就是合同名称.项目名称和项目金额 ...
- word模板生成word报表文档
主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...
- C#根据word模板生成word表格报表文档
主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...
- 使用word模板生成word文档的各类方案
使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...
- apache poi使用例_使用java Apache poi 根据word模板生成word报表例子
[实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...
- JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...
Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...
- 使用java Apache poi 根据word模板生成word报表
使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...
- PHP 使用word模板生成word文档示例
<?php namespace Home\Controller; use PhpOffice\PhpWord\TemplateProcessor; use Think\Controller; c ...
- java 根据word模板生成word文件
Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...
- 根据标准word模板生成word文档类库(开源)
前言 最近因项目需要要自定义标准word模板,并以编码方式操作word模板.填充数据和生成word文档,于是自己写了条小"内裤"来实现这个功能.该"内裤"只 ...
最新文章
- 敏感数据,“一键脱敏”,Sharding Sphere 完美搞定
- Linux系统编程——线程私有数据
- linux pyside2 安装包,Qt for Python 5.12发布下载,附PySide2和Shiboken2介绍
- zookeeper应用实例
- C语言用‘%20‘替换字符串中的所有空格的算法(附完整源码)
- python atan_Python
- 过程(栈帧结构是干货)
- 奇怪的顾客(C++)
- 95-30-060-java.util-HashSet
- 白话数据结构之【最小生成树】(转载)
- 凭证反过账 金蝶k3_金蝶软件k3凭证反过账
- 联通发送wap push备忘录
- 中文论文检索证明怎么开_作者如何拿到论文检索证明
- 如何用ps将图片修改成指定大小
- ddd软件设计两个人的工作
- #Geek Point# 创业、艺术家和量子物理
- 快消行业巨量引擎营销攻略
- macOS SwiftUI 进度指示器组件规范之 01 进度指标是什么 Progress Indicators
- 跟我一起从零学习安卓逆向分析
- 【数独个人项目】2. 拿到题目之后
热门文章
- php 格式化 sub,PHP DateTime sub()用法及代码示例
- try except python3.7_python3.X中try/except
- springboot 跨域_SpringBoot跨域加SpringSecurity就失效
- AM2320 温湿度计 单总线读取数据
- php get_token_all函数,pimcore getObjectByToken函数PHP对象注入漏洞
- 计算机超频的好处与坏处,CPU超频有什么坏处,到底会不会有副作用?
- java hh mm ss_【Java基础】比较时间大小(以HH:mm:ss格式为例)
- 电为啥要分交流、直流?
- python二维高斯分布生成_python 多维高斯分布数据生成方式
- python next day_PYTHON养成日记 DAY-13