docx poi 原理_POI实现DOC/DOCX转HTML

public classDocToHtml {private static final String encoding = "UTF-8";public staticString convert2Html(String wordPath)throwsFileNotFoundException, TransformerException, IOException,

ParserConfigurationException {if( wordPath == null || "".equals(wordPath) ) return "";

File file= newFile(wordPath);if( file.exists() &&file.isFile() )return convert2Html(newFileInputStream(file));else

return "";

}public staticString convert2Html(String wordPath, String context)throwsFileNotFoundException, TransformerException, IOException,

ParserConfigurationException {if( wordPath == null || "".equals(wordPath) ) return "";

File file= newFile(wordPath);if( file.exists() &&file.isFile() )return convert2Html(newFileInputStream(file), context);else

return "";

}public staticString convert2Html(InputStream is)throwsTransformerException, IOException,

ParserConfigurationException {return convert2Html(is, "");

}public static String convert2Html(InputStream is, HttpServletRequest req) throwsTransformerException, IOException, ParserConfigurationException {returnconvert2Html(is, req.getContextPath());

}public static String convert2Html(InputStream is, final String context) throwsIOException, ParserConfigurationException, TransformerException {

HWPFDocument wordDocument= newHWPFDocument(is);

WordToHtmlConverter converter= newWordToHtmlConverter(

DocumentBuilderFactory.newInstance().newDocumentBuilder()

.newDocument());

SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMddHHmmssSSS");final String prefix = sdf.format(newDate());final Map suffixMap = new HashMap();

converter.setPicturesManager(newPicturesManager() {public String savePicture(byte[] content, PictureType pictureType,

String suggestedName,float widthInches, floatheightInches) {

String prefixContext= context.replace("\\", "").replace("/", "");

prefixContext= StringUtils.isNotBlank(prefixContext) ? "/" + prefixContext + "/": prefixContext;

suffixMap.put(new String(content).replace(" ", "").length(), suggestedName);returnprefixContext+ UeConstants.VIEW_IMAGE_PATH + "/" +UeConstants.UEDITOR_PATH+ "/" + UeConstants.UEDITOR_IMAGE_PATH + "/"

+ prefix + "_"

+suggestedName;

}

});

converter.processDocument(wordDocument);

List pics =wordDocument.getPicturesTable().getAllPictures();if (pics != null) {for(Picture pic : pics) {try{

pic.writeImageContent(newFileOutputStream(

UeConstants.IMAGE_PATH+ "/" + prefix + "_" + suffixMap.get(new String(pic.getContent()).replace(" ", "").length())));

}catch(FileNotFoundException e) {

e.printStackTrace();

}

}

}

StringWriter writer= newStringWriter();

Transformer serializer=TransformerFactory.newInstance().newTransformer();

serializer.setOutputProperty(OutputKeys.ENCODING, encoding);

serializer.setOutputProperty(OutputKeys.INDENT,"yes");

serializer.setOutputProperty(OutputKeys.METHOD,"html");

serializer.transform(newDOMSource(converter.getDocument()),newStreamResult(writer) );

writer.close();returnwriter.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
POI(Poor Obfuscation Implementation)是一个Java库,可以用来处理Microsoft Office格式的文件,包括.doc和.docx。要将这些文件转换HTML格式,可以使用POI库的一些功能。 首先,需要引入POI库的相关依赖。然后,使用POI的XWPFDocument类来读取.docx文件,或者使用HSSFWorkbook类来读取.doc文件。它们都提供了访问文件的内容和结构的方法。 读取文件后,可以遍历其中的段落、文本和样式等元素,并将其转换HTML格式。可以使用StringBuilder来拼接HTML文本。例如,可以将每个段落转换为一个\<p>标签,每个文本转换为一个\<span>标签,并根据样式设置相关属性,如字体、颜色等。 对于嵌入的表格、图片和其他对象,可以使用POI的一些工具类来提取它们的内容,并根据需要转换HTML格式。例如,可以使用XWPFTables获取表格的数据,并将其转换为\<table>标签。对于图片,可以使用XWPFPictureData获取图片的二进制数据,并使用Base64编码将其嵌入到HTML中。 最后,将转换后的HTML文本保存到文件中或传输到Web页面中即可。 需要注意的是,POI库只提供了对Microsoft Office格式文件的处理功能,不保证100%的转换准确性。在使用过程中,可能需要根据具体情况进行一些调整和优化。另外,由于POI是一个开源项目,可以通过查阅官方文档和社区提供的资料来获得更多帮助和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值