直入正题,需求为页面预览word文档,用的是poi3.8,以下代码支持表格、图片,不支持分页,只支持doc,不支持docx;
/**
*
*/
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.PicturesManager;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.model.PicturesTable;
import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.hwpf.usermodel.PictureType;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.Table;
import org.apache.poi.hwpf.usermodel.TableCell;
import org.apache.poi.hwpf.usermodel.TableIterator;
import org.apache.poi.hwpf.usermodel.TableRow;
import org.w3c.dom.Document;
/**
* @author: Chembo Huang
* @since: May 3, 2012
* @modified: May 3, 2012
* @version:
*/
public class Word2Html {
public static void main(String argv[]) {
try {
convert2Html("D://1.doc","D://1.html");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void writeFile(String content, String path) {
FileOutputStream fos = null;
BufferedWriter bw = null;
try {
File file = new File(path);
fos = new FileOutputStream(file);
bw = new BufferedWriter(new OutputStreamWriter(fos,"GB2312"));
bw.write(content);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (fos != null)
fos.close();
} catch (IOException ie) {
}
}
}
public static void convert2Html(String fileName, String outPutFile)
throws TransformerException, IOException,
ParserConfigurationException {
HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(fileName));//WordToHtmlUtils.loadDoc(new FileInputStream(inputFile));
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder()
.newDocument());
wordToHtmlConverter.setPicturesManager( new PicturesManager()
{
public String savePicture( byte[] content,
PictureType pictureType, String suggestedName,
float widthInches, float heightInches )
{
return "test/"+suggestedName;
}
} );
wordToHtmlConverter.processDocument(wordDocument);
//save pictures
List pics=wordDocument.getPicturesTable().getAllPictures();
if(pics!=null){
for(int i=0;i<pics.size();i++){
Picture pic = (Picture)pics.get(i);
System.out.println();
try {
pic.writeImageContent(new FileOutputStream("D:/test/"
+ pic.suggestFullFileName()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Document htmlDocument = wordToHtmlConverter.getDocument();
ByteArrayOutputStream out = new ByteArrayOutputStream();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(out);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
out.close();
writeFile(new String(out.toByteArray()), outPutFile);
}
}
- 大小: 118.2 KB
- 大小: 106.9 KB
分享到:
相关推荐
在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格和图片。下面我们将详细介绍这个过程中的关键知识点。 1. **Apache POI简介** Apache POI 提供了Java API,使得...
1. 表格:POI能识别Word文档中的表格,并将其转换为HTML中的table元素。 2. 图片:POI能识别Word文档中的图片,并将其转换为HTML中的img元素,同时保存图片文件并引用其路径。 3. 文本样式:虽然不能完全保留所有...
这包括添加适当的CSS样式来保持原始Word文档的布局和格式。 5. **在线阅读**:将生成的HTML文件上传至服务器,并在网页中通过iframe或者直接链接的方式展示,用户即可在线预览和阅读。 在实际操作中,需要注意以下...
Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc、.docx)、Excel(.xls、.xlsx)和PowerPoint(.ppt、.pptx)。在Java环境中,Apache POI 提供了API,使得开发者能够读取、创建...
在本教程中,我们将重点讨论如何利用Apache POI 3.13版本来导出Word文档,并结合图片操作。 首先,Apache POI提供了一个叫做HWPF(Horrible Word Processor Format)的API来处理老版的Word(.doc)文件,而XWPF...
1. **Word内容提取**:Apache POI提供了API来访问Word文档中的文本、样式、图像和表格。通过HWPFFactory和XWPFDocument类,我们可以分别处理旧版的.doc文件和较新的.docx文件。使用这些类,可以逐段、逐行地遍历文档...
标题提到的"poi3.8 doc,excel转html",指的是使用Apache POI库的3.8版本进行Microsoft Office文档(尤其是DOC和XLS)到HTML的转换。Apache POI是一个流行的Java库,专门用于读取、写入和操作Microsoft Office格式的...
在本场景中,可能涉及读取Word文档中的文本、样式、表格、图像等元素,以便进行进一步的处理或分析。 “试卷数学公式导入wmf图片转成png图片”这部分涉及到两个技术点。首先,试卷通常包含数学公式,这些公式可能以...
"cms.rar_cms word_poi word html_poi word转HTML_poi转Word"这一标题提及的CMS可能是一个特定的项目或实现,它涉及到使用Apache POI库处理Microsoft Word文档,并将这些文档转换为HTML格式以供网页展示。Apache POI...
`extractTextFromOldDoc`方法处理旧版Word文档,但在这里留空,因为实际的实现可能更复杂,需要处理样式、页眉、页脚、图片等。`extractTextFromNewDoc`方法则处理.docx文件,提取其中的段落和表格,并将其转换为...
在实践中,你可能还需要处理更复杂的格式和样式转换,例如图片、页眉和页脚、页边距等。这可能需要进一步研究iText库的API来实现。确保在处理过程中正确处理异常,以保证程序的健壮性。 提供的"word2pdfdemo"压缩包...
在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定文本、表格和图片的报告。 首先,我们需要了解Java POI中的XWPFDocument类,它是用来处理.docx文件的。XWPFDocument可以读取、修改和创建...
Apache POI 是一个开源项目,专门用于处理微软的Office...总之,Apache POI是一个强大的工具,它使Java开发者能够方便地处理Office文档,包括将Word转换为HTML,但可能需要一些额外的代码来处理特定的格式和样式问题。
1. 使用Apache POI的XWPF API读取Word文档,获取文档的文本、段落、表格等元素。 2. 创建一个Docx4j的WordprocessingMLPackage对象,加载POI解析出的Word文档内容。 3. 调用Docx4j的`WordprocessingMLPackage.toPDF...
在POI 3.9版本中,我们可以使用HWPF(Horrible Word Processor Format)来处理旧版的Word(.doc)文件,而XWPF则用于处理较新的Word 2007及以后版本的.docx文件。 转换Word到HTML的基本步骤如下: 1. **导入依赖**...
POI库提供API来访问Word文档的各个部分,如段落、表格、列表、图片等。 4. **使用步骤**: - 加载Word文档:使用POI的`HWPFDocument`类(针对.doc文件)或`XWPFDocument`类(针对.docx文件)打开Word文档。 - 遍历...
本篇文章将深入探讨如何利用POI库在Word文档中进行模板替换以及循环插入表格的操作。 首先,我们需要理解Apache POI的工作原理。POI提供了HWPFOI(用于处理老版的.doc文件)和XWPF(用于处理新版的.docx文件)两个...