在生成简历的过程中,我的做法是首先设计一个word的简历模板,设置好书签,从数据库中读取数据,调用aspose进行填充。一般的数据项包括图片文件都没有问题。

问题出在了HTML字符串上。因为简历中有几个数据项是采用富文本框来进行采集的,采集的结果是以HTML字符串的格式存入数据库中的,如果直接从数据库中提取这样的字符串往word里面填充,word里面显示的就是HTML字符串,显然不是我要的结果。这里需要把HTML字符串解析为文本。一种简单的做法是直接去掉HTML字符串中的HTML标记,这样做的结果是留下来的确实是用户录入的数据内容,但是仅仅是数据内容,文本格式没有的,比如说字体大小、颜色、空格、换行等等都没有了,这样插入word里面之后,可读性很差;在网上找了很多资料,发现一种好办法,那就是调用SautinSoft.HtmlToRtf.dll,这个dll文件能够处理整页HTML文档转换为word文件,也可以将HTML字符串转换为rtf字符串。

为了将HTML字符串转换为带有格式的文本,我的做法是,第一步,将HTML字符串通过SautinSoft.HtmlToRtf.dll里面的方法转换为rtf字符串;第二步,将rtf字符串保存为一个word文件,这样形成的word文件就是有格式的word文本了;第三步,使用aspose读取生成的word文件里面的文本,插入到我最终要生成的简历文档中。

这里要特别注意的一个问题是,我采用的SautinSoft.HtmlToRtf.dll是没有授权的,存在一个转换字符数量的限制(1000000),而且在转换出来的rtf字符串中有他们的版权标记,我对rtf字符进行了分析之后,将rtf字符串中与版权有关的部分去掉了,才算是解决了问题。

private string HtmlTransLate(string strHtmlCode)
        {
            string temp = "";
            if (strHtmlCode != "")
            {
                SautinSoft.HtmlToRtf h = new SautinSoft.HtmlToRtf();
                h.PageStyle.PageSize.Letter();
                h.PageStyle.PageMarginLeft.Mm(20f);

string htmlString = "";
                string rtfString = "";

htmlString = strHtmlCode;//HTML字符串

rtfString = h.ConvertString(htmlString);//HTML字符串转换为rtf字符串
                rtfString = rtfString.Remove(rtfString.Length - 454, 453);//rtf字符串去掉版权信息

string tname = Server.MapPath(@"~/info/test1.doc");

WriteFile(tname, rtfString);//rtf字符串保存到word文件中

Document tempdoc = new Document(Server.MapPath(@"~/info/test1.doc"));//读取生成的word文件
                temp = tempdoc.GetText();//得到word文件中的文本内容
            }
            return temp;
        }

生成简历经验总结(解析HTML字符串)的更多相关文章

  1. C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  2. C#解析JSON字符串总结(转载)

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  3. java解析xml字符串方法

    一,用DOM4J  针对无重复标签的xml字符串格式,如下: 针对此种情况可用DOM4J解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelpe ...

  4. 一、JSON解析与字符串化

    JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 filter,指定要序列化的 ...

  5. JS的全局函数eval解析JSON字符串

    JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...

  6. JackSon解析json字符串

    JackSon解析json字符串 原文:http://blog.csdn.net/java_huashan/article/details/9353903 概述 jackson解析json例子 准备工 ...

  7. Java 实现《编译原理》中间代码生成 -逆波兰式生成与计算 - 程序解析

    Java 实现<编译原理>中间代码生成 -逆波兰式生成与计算 - 程序解析 编译原理学习笔记 (一)逆波兰式是什么? 逆波兰式(Reverse Polish notation,RPN,或逆 ...

  8. ZeroMQ接口函数之 :zmq_z85_decode – 从一个用Z85算法生成的文本中解析出二进制密码

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_z85_decode zmq_z85_decode(3)         ØMQ Manual - ØMQ/4.1 ...

  9. js中解析json对象:JSON.parse()用于从一个字符串中解析出json对象, JSON.stringify()用于从一个对象解析出字符串。

    JSON.parse()用于从一个字符串中解析出json对象. var str = '{"name":"huangxiaojian","age&quo ...

随机推荐

  1. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  2. C++程序设计实践指导1.14字符串交叉插入改写要求实现

    改写要求:1:以指针为数据结构开辟存储空间 改写要求2:被插入字符串和插入字符串不等长,设计程序间隔插入 如被插入字符串长度为12,待插入字符串长度为5 则插入间隔为2 改写要求3:添加函数Inser ...

  3. ie textarea不支持maxlength textarea限制长度

    //ie textarea不支持maxlength $('#verify_note').bind('input propertychange', function() { if (this.value ...

  4. [Javascript]史上最短的IE浏览器判断代码

    今天发现个很有趣的js判断全世界最短的代码,想想之前自己写的判断ie浏览器的,这个实在简单多了 var ie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,<32 ...

  5. 读php手册一点点心得(1)

    1.   要输出大段文本时,跳出PHP解析模式通常比将文本通过echo或print输出更有效率(手册) 2.   note :为了代码的发行及一致性,确保不要使用短标记,短标记仅通过php.ini配置 ...

  6. python运维开发(二十)----models操作、中间件、缓存、信号、分页

    内容目录 select Form标签数据库操作 models操作F/Q models多对多表操作 Django中间件 缓存 信号 分页 select Form标签补充 在上一节中我们可以知道Form标 ...

  7. Azure上A/D系列虚拟机到DS系列迁移(2)

    11. 该脚本会检测环境,停止虚拟机,拷贝VHD文件,创建磁盘等等,知道出现如下类似画面,他会暂停等待用户操作: 后面这几个步骤非常重要,关系到你后续的创建是否成功: 12. 进入D:\migvm目录 ...

  8. js阻止元素的默认事件与冒泡事件

    嵌套的div元素,如果父级和子元素都绑定了一些事件,那么在点击最内层子元素时可能会触发父级元素的事件,从而带来一定的影响. 1. event.preventDefault();  -- 阻止元素的默认 ...

  9. javascript加载优化

    当加载js时,页面会一直在转,没有加载完. 如何优化这一点呢 js的加载方式介绍 同步加载---------------异步加载------------------延迟加载 异步加载仍然会触发wind ...

  10. js Array数组的使用

    js Array数组的使用   Array是javascript中的一个事先定义好的对象(也可以称作一个类),可以直接使用 创建Array对象 var array=new Array(): 创建指定元 ...