在生成简历的过程中,我的做法是首先设计一个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. (转) ROS NAMING AND NAMESPACES

    原文地址:http://nootrix.com/2013/08/ros-namespaces/   In this tutorial, we will be talking about ROS nam ...

  2. 何时可以开启透明数据加密(TDE)?

    TDE可以为我们的数据库提供加密保护,但是,不是任何情况下都可以随意开启TDE的,同时开启TDE后,我们的数据库维护管理工作也需要进行一些调整. 下面我们就先看看开启TDE需要的条件吧! 无法正常开启 ...

  3. Linux下安装MySQL步骤

    1.下载安装包(这里是32位的): MySQL-client-5.6.13-1.rhel5.i386.rpm MySQL-server-5.6.13-1.rhel5.i386.rpm 2.安装 rpm ...

  4. Yii2.0 UrlManager

    服务器软件的配置与1.0一致即可.. 在组件中进行如下配置: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' = ...

  5. 连接oracle数据库出现:ORA-12505,TNS:listener does not currently know of SID given in connect descriptor

    Java使用 jdbc:oracle:thin:@11.1.0.14:1521:orcl 连接oracle数据库出现: ORA-12505,TNS:listener does not currentl ...

  6. jQuery.data的是jQuery的数据缓存系统

    jQuery.Data源码 jQuery.data的是jQuery的数据缓存系统 jQuery.data的是jQuery的数据缓存系统.它的主要作用就是为普通对象或者DOM元素添加数据. 1 内部存储 ...

  7. 解决Webservice内存溢出-用XmlWriter

    XmlWriter 表示一个编写器,该编写器提供一种快速.非缓存和只进的方式来生成包含 XML 数据的流或文件.这个就可以不占用内存,将数据放入磁盘中.也就不会出现内存溢出 public class ...

  8. Ext4报错Uncaught Ext.Loader is not enabled

    提示: Uncaught Ext.Loader is not enabled, so dependencies cannot be resolved dynamically. Missing requ ...

  9. 直接地址跳转C实现

    <C缺陷和陷阱>讲过的一种方法: ( *( void (*)() ) 0 )(); //跳转到0地址执行 解析: 1.void (*p_fun)(void); //声明函数指针 2.voi ...

  10. 一些.Net面试题 (BS 方向)

    http://www.cnblogs.com/PurpleTide/archive/2012/03/10/2389496.html 解决方案和思路类: 设计和策略: 1.有一个网站的中购买功能, 假设 ...