生成简历经验总结(解析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)