生成简历经验总结(解析HTML字符串)
在生成简历的过程中,我的做法是首先设计一个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字符串)的更多相关文章
- C#解析JSON字符串总结
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- C#解析JSON字符串总结(转载)
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- java解析xml字符串方法
一,用DOM4J 针对无重复标签的xml字符串格式,如下: 针对此种情况可用DOM4J解析法,引入 dom4j的相关jar包代码如下: Document document=DocumentHelpe ...
- 一、JSON解析与字符串化
JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 filter,指定要序列化的 ...
- JS的全局函数eval解析JSON字符串
JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...
- JackSon解析json字符串
JackSon解析json字符串 原文:http://blog.csdn.net/java_huashan/article/details/9353903 概述 jackson解析json例子 准备工 ...
- Java 实现《编译原理》中间代码生成 -逆波兰式生成与计算 - 程序解析
Java 实现<编译原理>中间代码生成 -逆波兰式生成与计算 - 程序解析 编译原理学习笔记 (一)逆波兰式是什么? 逆波兰式(Reverse Polish notation,RPN,或逆 ...
- ZeroMQ接口函数之 :zmq_z85_decode – 从一个用Z85算法生成的文本中解析出二进制密码
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_z85_decode zmq_z85_decode(3) ØMQ Manual - ØMQ/4.1 ...
- js中解析json对象:JSON.parse()用于从一个字符串中解析出json对象, JSON.stringify()用于从一个对象解析出字符串。
JSON.parse()用于从一个字符串中解析出json对象. var str = '{"name":"huangxiaojian","age&quo ...
随机推荐
- C++学习笔录4
1.容器=数据结构+算法.相当于是为复杂的数据设计一种专门用于存放该数据的东西.用于开发中传递复杂的数据. 2.模版函数只能写在头文件中.不能单独做声明. 3.STL容器类分为三类: (1).顺序容器 ...
- Nvidia CUDA 6 Installed In Ubuntu 12.04
环境:ubuntu 12.04 (x64) 如果不能够 service lightdm stop,显示:unknown service 或者其他的 sudo /etc/init.d/lightdm r ...
- Ubuntu14.10下解决chromium浏览器无法安装adobe flash的问题
本文参考了一下资源和博客,在此提出表示感谢: http://my.oschina.net/u/209016/blog/290067 http://ubuntuhandbook.org/index.ph ...
- JDK动态代理例子
JDK动态代理的代理类必须实现于接口.如果要代理类,则使用CGLIB代理. 先定义一个接口: public interface Character { public void show(); } 接着 ...
- 在shell脚本中调用sqlplus
#!/bin/bash sqlplus dc_file_data_js/dc_file_data_js << EOF1 set linesize 500; set pagesize 100 ...
- [原]用C#模拟实现扑克牌发牌、排序程序…
(1)52张扑克牌,四种花色(红桃.黑桃.方块和梅花),随机发牌给四个人. (2)最后将四个人的扑克牌包括花色打印在控制台上. 其中: 花色和点数用枚举类型实现 每张扑克牌用结构实 ...
- <Programming Collective Intelligence> Chapter2:Making Recommendations
<Programming Collective Intelligence> Chapter2:Making Recommendations 欧几里得距离评价 皮尔逊相关度评价 它相比于欧几 ...
- nodejs 如何使用upgrade,并且C/B 发送消息
1 const http = require('http'); const querystring = require("querystring"); var postData = ...
- HDU5437 Alisha’s Party (优先队列 + 模拟)
Alisha’s Party Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- OpenWrt 学习网址
http://m.blog.csdn.net/blog/woods2001/8137755