从mht文件中提取html内容
最近做的一个程序中,需要把从51job导出来的简历进行解析,51job支持doc和mht格式。开始时以为该doc文件是Word文件,于是采用Apache POI中提供的WordExtractor来进行,从word文件中提取文本内容。
import org.apache.poi.hwpf.extractor.WordExtractor;
WordExtractor wordExtractor = new WordExtractor(new FileInputStream(tempFile));
content = wordExtractor.getText();
测试时,发现总是报异常
Invalid header signature; read 0x7265762D656D696D, expected 0xE11AB1A1E011CFD0
用Notepad++打开看了一下,发现是个文本文件
mime-version: 1.0
From: <由 网才@51Job 生成>
date: 13 Apr 2012 17:20:13 +0800
subject: Resume
content-type: multipart/related; boundary=--boundary_578_1d3227f5-c157-41cf-b651-c43d296bd49f
----boundary_578_1d3227f5-c157-41cf-b651-c43d296bd49f
content-type: text/html; charset=gb2312
content-transfer-encoding: quoted-printable
<html><body><table width=3D'650' height=3D'62' border=3D'0' align=3D'center'=
cellpadding=3D'0' cellspacing=3D'0'><tr><td width=3D'62%' height=3D'60'=
align=3D'left' valign=3D'bottom' class=3D'top'>=D3=A6=C6=B8=D6=B0=CE=BB=A3=BA<span=
这表明51job生成的doc文件本质上是个mht文件。因此,也得到一个启示:下次如果项目中需要导出word格式文件,也可用mht格式来冒充,反正word也可以正常打开。
mht 百度百科 写道
MHTML文件又称为聚合HTML文档、Web档案或单一文件网页。单个文件网页可将网站的所有元素(包括文本和图形)都保存到单个文件中。这种封装使您可将整个网站发布为单个内嵌 MIME (MIME:通过 Internet 连接传递多媒体资源的一列标准。MIME 类型通知程序对象所包含的内容(如图形、声音或视频)的聚合HTML文档(MHTML)文件,或将整个网站作为一个电子邮件或附件发送。Internet Explorer 4.0及更高版本支持此格式。
现在的问题变成了,怎么从mht中提取html内容了。在iteye上找到了,还挺好用,
thinkgem 的 《Java实现 HTML to MHT》,地址:http://thinkgem.iteye.com/blog/724208
使用方法如下:
String htmlFile = tempFile.substring(0, tempFile.length() - 4) + ".html";
log.debug("html=" + htmlFile);
Html2MHTCompiler.mht2html(tempFile, htmlFile);
这样之后,htmlFile指定的文件中保存的就是提取出来html内容。在实际的测试中,发现需要对代码做一下小的修改,在类Html2MHTCompiler第441行附近。
MimeMultipart mp = (MimeMultipart) content;
MimeBodyPart bp1 = (MimeBodyPart) mp.getBodyPart(0);
String strEncodng = getEncoding(bp1);
String strText = getHtmlText(bp1, strEncodng);
if (strText == null)
return;
因为我碰到两种情况:
1. strEncodng 可能为空;
2. strEncodng 不为空时,字符串可能带有双引号;
这两种情况都会导致后面的 getHtmlText 调用抛出异常。
可修改如下:
String strEncodng = getEncoding(bp1);
if (strEncodng == null) {
strEncodng = "GBK"; // 2012.04.23
} else {
strEncodng = strEncodng.replace("\"", "");
}
String strText = getHtmlText(bp1, strEncodng);
至少在我测试的doc/mht文件中能正确处理。
分享到:
相关推荐
本文将深入探讨如何从Word文档中有效地提取文本。 在早期的文本编辑器时代,编辑工具相对简单,如Basic编辑器,它以“行”为基础,每一行的内容被划分为代码行和命令行。代码行前会有一个序号,用以区分不同的行,...
总之,Tika是Java开发中一个不可或缺的工具,它简化了从复杂文件格式中提取文本和元数据的过程,提高了工作效率,并且具有高度的可定制性和灵活性。无论是在信息检索、内容分析还是大数据处理等领域,Tika都能发挥...
本主题聚焦于如何使用C#从Word文档中提取文本,这在数据处理、文档分析或自动化任务中非常常见。以下是关于这个话题的详细说明。 首先,要处理Word文档,你需要使用Microsoft Office Interop库,它允许C#代码与...
总结来说,`textract`是一个强大且灵活的Python库,它简化了从多种文件格式中提取文本的过程,对于需要处理非结构化数据的开发者来说,这是一个非常有价值的工具。无论你是数据分析师、自然语言处理工程师还是需要...
### 文档检索——从Word、PPT、Excel文件中提取文本 #### 一、引言 在企业级应用中,经常需要处理大量的文档文件,包括Word、PowerPoint(PPT)、Excel等格式。这些文件中可能包含重要的业务数据或者文本信息。为了...
这个模块使得开发人员能够读取和写入 .doc 文件,而不仅仅是提取文本内容。 `HWPFDocument` 类是 HWPF 模块的核心,它代表了一个 Word .doc 文档。当你创建或打开一个 `HWPFDocument` 对象时,你可以访问文档的各个...
本代码实现的是用c++提取office中的word和ppt里面的文本内容,然后把提取的内容放到txt中。 txt的路径是f盘中的result; 要成功运行的话,在ExtractOfficeDlg.cpp里面把需要打开的文件路径改一下就可以了。 doc,docx,...
下面我们将详细讨论如何在Java后端实现从wangEditor生成的富文本内容(包括base64编码的图片和网络图片)转换为Word文档,并提供下载功能。 首先,我们需要了解wangEditor生成的内容结构。wangEditor会将用户编辑的...
- 遍历文档内容,提取文本、样式、图片和表格。 - 将这些元素转换为HTML格式的标签和属性。 - 将图片保存到服务器或本地,生成对应的URL。 - 组合HTML代码,生成最终的HTML文件。 6. **前端HTML**:转换后的...
本文将详细介绍如何使用Apache POI来高效地读取.doc和.docx格式的Word文档内容。 #### Apache POI简介 Apache POI是一个开源项目,由Apache软件基金会维护。它为Java开发者提供了一组API,用于处理Microsoft ...
在本文中,我们将深入探讨如何使用Delphi通过OLE(Object Linking and Embedding)技术来操作Microsoft Word,特别是提取DOC文档的内容和图片,并将这些内容转换为HTML格式。这个过程对数据处理、文档管理和自动化...
golang提取office文件内容,可以支持正常office文件内容格式,可以很好的提取标点以及内在格式内容
利用这个库,我们可以解析富文本编辑器生成的HTML,提取文本和样式,然后创建对应的Word文档结构。 以下是实现这个功能的基本步骤: 1. **HTML解析**:使用HTML解析库(如Jsoup)解析富文本编辑器生成的HTML,获取...
在Java编程语言中,Apache POI是一个非常流行的库,它允许开发者处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。本篇将详细介绍如何利用Apache POI库来读取Word文件中的内容。 首先,理解Apache ...
功能主要实现了1、对pdf、word文件进行预览显示2、读取pdf、word文本数据3、进行文本之间的相似度比较。 资源每段我基本都有详细的过程注解,Demo可以直接运行测试。 pdf的预览及读取我是用的网上的Poppler第三方库...
Word 2007 文档是基于 OpenXML 标准的,使用 ZIP 压缩文件格式来存储文档内容。一个 Word 2007 文档通常由以下几部分组成: * _rels 文件夹:存储文档的关系信息,包括文档结构和组件之间的关系。 * docProps ...
`antiword`不支持.docx格式,但对于旧版的Word文档(.doc),它能有效地提取文本。在Debian或Ubuntu上,你可以通过`apt-get install antiword`来安装它。使用`antiword`也很简单,比如`antiword yourfile.doc > ...
B: office word文件 ".doc", ".odt", ".docx", ".dotm", ".docm" C: wps文档 ".wps" D: office excel文件 ".xls", ".xlsx", ".xlsm", ".xltm" E: wps表格 ".et" F: office powerPoint文件 ".ppt", ".pptx", ".potm",...
微软DOC二进制文件格式是Microsoft Word用于存储文档的主要格式,尤其在早期版本如Word 97、2000、2002(XP)和2003中广泛使用。这种格式以`.doc`为扩展名,采用二进制编码,包含文本、样式、图片、表格、页眉页脚等...
这个类提供了读取Word文档内容的方法,如提取文本、样式信息等。 4. **替换占位符**:遍历模板中的段落和字符,查找并替换占位符。这可以通过Paragraph对象的getParagraphText()方法获取段落文本,然后使用正则...