项目需求:表单归档时生成表单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 + "/";elsedocFIlePath = "/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_jcystring 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_jcystring 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);
}

aspose.word、aspose.pdf dll 下载地址
http://download.csdn.net/download/tt871911/10229509

aspose利用word模板生成word、PDF相关推荐

  1. 利用 freemarker 模板生成 word 小结

    在企业级开发时,不可避免的会遇到生成 word 文档的需求,有两种常用的方案,1.使用 Apache POI 在后台通过代码生成 word 文档:2.使用模板生成 word 文档.第二种方法比较简单, ...

  2. 根据word模板生成word和PDF

    根据word模板生成word和PDF 需求:有一个固定的合同模板,在vue前台填写指定的信息,替换合同模板指定的内容 我们使用的默认模板内容如图: 我们在前端填写的字段就是合同名称.项目名称和项目金额 ...

  3. 使用word模板生成word文档的各类方案

    使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...

  4. java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...

  5. word模板生成word报表文档

    主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...

  6. C#根据word模板生成word表格报表文档

    主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...

  7. apache poi使用例_使用java Apache poi 根据word模板生成word报表例子

    [实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...

  8. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  9. 使用java Apache poi 根据word模板生成word报表

    使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...

  10. PHP 使用word模板生成word文档示例

    <?php namespace Home\Controller; use PhpOffice\PhpWord\TemplateProcessor; use Think\Controller; c ...

最新文章

  1. PHP操作MYSQL--PDO
  2. 【采用】百度大规模知识图谱构建及智能应用
  3. always on sql 收缩日志_SQL Server AlwaysOn日志收缩
  4. 前端学习(3232):高阶函数函数柯里化
  5. 如何在cmd命令提示符里打开Python
  6. Visual Studio 2015 安装教程(附安装包)
  7. C++关键字—this
  8. 指针变量占用的内存空间大小说明
  9. Windows 2008 Server线程池前瞻(原创)
  10. 编写你的应用程序(三)、3D图形
  11. 二零零七年五一节自驾游记(十)--------0501若尔盖花湖II
  12. win10 任务栏的工具栏 以及重启消失的解决方法
  13. MTK获取iso的几种方式
  14. 安润网提供的游戏下载,您可以到安润网的论坛中下载,无须注册。
  15. 用阿里云构建海外镜像
  16. 复杂网络分析以及networkx学习
  17. 并发编程之深入理解synchronized
  18. 电脑cpu速度测试软件,使用鲁大师 一键测试电脑的处理器(CPU)速度
  19. Jetson nano-使用教程(转载)
  20. 为什么网上查到的ip和自己ipconfig出来的不一样?

热门文章

  1. 百科知识 kux文件如何打开
  2. Win7 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足
  3. FastAPI获年度第一新兴框架,2021年最受欢迎的TOP 100开发工具出炉
  4. HX710_24位电子秤AD采集
  5. 小米笔记本linux指纹,小米笔记本Air 13.3寸指纹版(128GB)如何bios设置u盘启动
  6. Qt 利用海康摄像头的ISAPI协议进行抓图等操作
  7. 高校毕业生就业信息管理系统的设计与实现(Spring + Spring MVC +Hibernate)
  8. Typecho网站访问浏览总量统计插件PageViews升级版
  9. matlab电流测量接法,matlab电压电流测量模块的使用
  10. 计算机组装所需要的主要配件有哪些,组装电脑需要哪些零件_组装电脑需要哪些配件...