-
2019-01-29 13:29:55
图片在转换结果中,会以Base64编码的方式编码。
前置条件:安装pydocx
pip install pydocx
from pydocx import PyDocX html = PyDocX.to_html("test.docx") f = open("test.html", 'w', encoding="utf-8") f.write(html) f.close()
通过网页上传word文档,只接收docx
<form method="post" enctype="multipart/form-data"> <input type="file" name="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document"> </form>
windows下,将doc转为docx
pip3 install pypiwin32
from win32com import client word = client.Dispatch("Word.Application") doc = word.Documents.Open("D:\\***\\**.doc") //绝对路径 doc文件 doc.SaveAs("D:\\***\\**.docx",16) //保存的docx 文件,绝对路径 doc.Close() word.Quit()
更多相关内容 -
可以将word转成html的js代码
2020-12-02 09:45:04使用前提是:电脑已经安装了word,这里用到的是word组件Word.Application。 代码如下:<HTML> <HEAD> <TITLE>WalkingPoison’s Word-to-HTML sample</TITLE> [removed] function saveword() {... -
Word转成HTML
2018-04-18 10:00:43Word转成HTML,可支持03和07版,已封装为工具类,直接调用即可,jar包齐全 -
利用POI将word转换成html实现在线阅读
2021-01-24 02:31:03利用POI将word转换成html实现在线阅读 利用POI将word转换成html实现在线阅读 利用POI将word转换成html实现在线阅读 利用POI将word转换成html实现在线阅读 -
Node.js-一个使用node将word转成html的小工具
2019-08-09 18:18:30使用 koa 写了一个小网站,上传 word 文档即可将 word 转成 html,并且有可编辑 html。编辑好了之后只需要点击上传就能将 html 生成访问链接 -
word转换成html工具
2012-11-03 11:39:22转换时请先备份WORD文件,转换时会把整个文件夹及子文件夹内的全部WORD转成HTM文件。 Word 转换成 Html Word 转换成 Html Word 转换成 Html 注意:转换时会删除原文件,一定要备份原文件 注意:转换时会删除... -
java实现word转换成html实现word预览
2017-11-24 17:30:05java实现word转换成html实现word预览 -
Java使用poi将word转换为html
2020-08-31 19:43:26主要为大家详细介绍了Java使用poi将word转换为html的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
poi将word转换成html、样式 表格 图片处理
2013-03-04 10:25:29poi将word里面的内容转换成html、包括word里面字体的大小、表格的处理、还有图片、段落等等... -
怎么用python将Word转成html?
2021-06-17 03:27:39#coding=utf-8#文件名:#BatchConverWords2Html.py#说明:#批量将一个文件夹下的所有.doc/.docx文件转为.html文件,需要安装对应的Win32模块#调用方式:进入源程序目录,命令:pythonBatchConverWords2...#coding=utf-8
#文件名:
#BatchConverWords2Html.py
#说明:
#批量将一个文件夹下的所有.doc/.docx文件转为.html文件,需要安装对应的Win32模块
#调用方式:进入源程序目录,命令:pythonBatchConverWords2Html.pyRootDir
fromWin32comimportclientaSWc
importos
Word=wc.Dispatch('Word.Application')
defWordsToHtml(dir):
Forpath,SUbdirs,filesinos.walk(dir):
ForWordFileinfiles:
WordFullName=os.path.join(path,WordFile)
#PRint"Word:"+WordFullName
doc=Word.Documents.Open(WordFullName)
WordFile2=unicode(WordFile,"gbk")
dotIndex=WordFile2.rfind(".")
if(dotIndex==-1):
PRint"********************ERROR:未取得后缀名!"
fileSuffix=WordFile2[(dotIndex+1):]
if(fileSuffix=="doc"orfileSuffix=="docx"):
fileName=WordFile2[:dotIndex]
htmlName=fileName+".html"
htmlFullName=os.path.join(unicode(path,"gbk"),htmlName)
#htmlFullName=unicode(path,"gbk")+"\"+htmlName
PRint"generatehtml:"+htmlFullName
doc.SaveAs(htmlFullName,10)
doc.Close()
Word.QUIt()
PRint""
PRint"Finished!"
if__name__=='__mAIn__':
importsys
iflen(sys.argv)!=2:
PRint"Usage:pythonfuncName.pyrootdir"
sys.exit(100)
WordsToHtml(sys.argv[1])运行结果就是在rootdir目录下的所有Word文档转为简洁版的html网页文件,生成的文件存在原Word同目录下,生成 xxx.files 文件夹。
-
在线编辑word,word转html,根据html标签生成word,word修改前后的内容对比
2019-03-15 17:35:31该功能支持word在线编辑,word转换为html,html转换为word,word在线编辑前后的内容对比,并支持将对比后的内容生成word,删除的内容标红,新增的内容标绿 -
android studio 实现word转html
2018-01-29 10:51:16说明:该示例代码用于完成将android设备本地存储word文件利用调用POI库转换为html文件,将其利用webView进行显示并存储到设备存储卡中。 博客文章:http://mp.blog.csdn.net/postedit/79192623 -
将2003/2007版本word转成html进行浏览
2016-12-03 22:16:44将2003/2007版本word转成html进行浏览 -
通过Js实现Html转换成Word下载
2021-12-08 14:35:17比如文件下载,可以使用这个Js来实现,不用单独再去传word版本,还有就是有些文件还找不到word版,就可以用这个来实现 -
WORD转成html
2011-01-22 21:47:46WORD转成html 把txt文件几docx文件转成html页面程序大家可以看看 -
php实现将HTML页面转换成word并且保存的方法
2020-10-21 08:04:45主要介绍了php实现将HTML页面转换成word并且保存的方法,结合实例形式分析了PHPWord工具的功能与使用方法,具有一定参考借鉴价值,需要的朋友可以参考下 -
C# HtmlToWord 将HTML文件转换成word文档
2018-05-10 13:00:32批量的把html 文件转换成word,不需要电脑上有word软件!并且支持本地图片,html链接的图片必须在本地,可以把图片转换到word里! -
js把word转成html
2009-06-01 10:22:34js把word转成html js把word转成html js把word转成html js把word转成html -
java poi 将word转成html,ppt转成图片
2015-12-27 21:54:28前几日在做项目时需要将ppt转化为图片,将word文档输出的功能。在百度搜了些资料,整理了一下,借用前辈们的经验整合了这两个小小的类 文章原出两处:http://vtrtbb.iteye.com/blog/601267 ...Java 容易被忽视的poi包
Poi提取技术是java中一大亮点。前几日在做项目时需要将ppt转化为图片,将word文档输出的功能。在百度搜了些资料,整理了一下,借用前辈们的经验整合了这两个小小的类
文章原出两处:http://vtrtbb.iteye.com/blog/601267
http://pengenjing.iteye.com/blog/1901225
来看下面的吧word文档转化为html格式的代码先:
package com.hsp.util;
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;
public class Word2Html {
/*newrealpath是指word文档的原路径,realpath是指word文档的新路径,newsid是指该word文档存储在数据库中的唯一id值,用户没上传一个word文档,后台会根据生成的唯一id值创建一个.html文件,就是newsid.html*/
public static boolean changeWord2html(String newrealpath,String realpath,int newsid) {
boolean b=true;
try {
convert2Html(newrealpath,realpath+"//"+newsid+".html");
} catch (Exception e) {
e.printStackTrace();
b=false;
}
return b;
}
//该方法是将文本写入路径之中
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));//创建一个文档
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);
//保存图片
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("E:/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); //调用writeFile类
}
}
下面的我们来看看ppt转化为图片格式的代码:
package com.hsp.util;
import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.record.Slide;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
public class PPTtoImage {
/*pptload是指ppt的原路径,newfullnewpath是指ppt的新路径,newsid是指该ppt存储在数据库中的唯一id值,用户没上传一个ppt,后台会根据生成的唯一id值创建一个唯一的文件夹,该文件夹内存放该ppt转化的图片*/
public static List changppttoimage(String pptload,String newfullnewpath,int newsid){
// 读入PPT文件
File file = new File(pptload);
return doPPTtoImage(file,newfullnewpath,newsid);
}
public static List doPPTtoImage(File file,String newfullnewpath,int newsid){
/*boolean isppt = checkFile(file);
if (!isppt) {
System.out.println("你指定的文件不是ppt文档!");
return false;
}*/
List al=new ArrayList();
try {
FileInputStream is = new FileInputStream(file);
SlideShow ppt = new SlideShow(is);
is.close();
Dimension pgsize = ppt.getPageSize();
org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();
for (int i = 0; i < slide.length; i++) {
//System.out.print("第" + i + "页。");
if(slide[i].getNotesSheet()!=null&&slide[i].getNotesSheet().getTextRuns()!=null){
//获取第一个备注
//System.out.println("备注:" + slide[i].getNotesSheet().getTextRuns()[0].getText());
}
TextRun[] truns = slide[i].getTextRuns();
for (int k = 0; k < truns.length; k++) {
RichTextRun[] rtruns = truns[k].getRichTextRuns();
for (int l = 0; l < rtruns.length; l++) {
rtruns[l].setFontIndex(1);
rtruns[l].setFontName("宋体");
// 获取文本列表
//System.out.println(rtruns[l].getText());
}
}
BufferedImage img = new BufferedImage(pgsize.width,
pgsize.height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,
pgsize.height));
slide[i].draw(graphics);
// 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
File f=new File(newfullnewpath);
//判断该文件夹是否存在,如果不存在,这创建一个新的文件夹
if(!f.isDirectory())
{
f.mkdirs();
}
FileOutputStream out = new FileOutputStream(newfullnewpath+"pict_"+(i + 1) + ".jpeg");
javax.imageio.ImageIO.write(img, "jpeg", out);
al.add("pict_"+(i + 1) + ".jpeg");
out.close();
}
/*System.out.println("ok");
return true;*/
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
e.printStackTrace();
}
return al;
}
// function 检查文件是否为PPT
public static boolean checkFile(File file) {
boolean isppt = false;
String filename = file.getName();
String suffixname = null;
if (filename != null && filename.indexOf(".") != -1) {
suffixname = filename.substring(filename.indexOf("."));
if (suffixname.equals(".ppt")) {
isppt = true;
}
return isppt;
} else {
return isppt;
}
}
}
经测试是可行的,在小编这里是可以运行成功的,不过,上面只是简单的两个类而已,在项目中,还要用struts2去限定转化文件的大小等等。
-
完美解决doc、docx格式word转换为Html
2015-09-27 16:57:53由于项目需要,需要在线预览文档,所以就想转换为htmL格式; 此项目为maven项目,引入的包可能需要一些时间; maven项目转换为eclipse项目命令是:mvn eclipse:eclipse,然后导入到eclipse; jar引入完成后,绝对100... -
word转html带目录结构的实现方式.docx
2020-08-09 23:44:57将word中的目录结构树提取出来放到html的左侧并生成相应的树目录,在html中点击树目录时整个页面可以跳到对应的位置 -
word文档转换成html文档-保留word中的图片样式等信息
2019-05-30 16:37:53word文档转换成html文档-保留word中的图片样式等信息。还原度99%。 -
Java实现word转HTML
2019-12-02 22:34:38Java word转html主要是为了word的在线浏览。不过转换可用性不是很好。我们先开始开发吧 第一步:引用Maven <!-- Word转HTML start --> <dependency> <groupId>org.apache.poi</...Java word转html主要是为了word的在线浏览。不过转换可用性不是很好。我们先开始开发吧
第一步:引用Maven
<!-- Word转HTML start --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>xdocreport</artifactId> <version>1.0.6</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>ooxml-schemas</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.3</version> </dependency> <!-- Word转HTML end -->
第二步:java实现代码
原始版本;
package com.mmxpw.mmw.file.view.word; 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.usermodel.PictureType; import org.apache.poi.xwpf.converter.core.BasicURIResolver; import org.apache.poi.xwpf.converter.core.FileImageExtractor; import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter; import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.w3c.dom.Document; 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 java.io.*; public class WordToHtml { /** * 将word2003转换为html文件 * * @param wordPath word文件路径 * @param wordName word文件名称无后缀 * @param suffix word文件后缀 * @param htmlPath html存储地址 * @throws IOException * @throws TransformerException * @throws ParserConfigurationException */ public static String Word2003ToHtml(String wordPath, String wordName, String suffix, String htmlPath) throws IOException, TransformerException, ParserConfigurationException { String htmlName = wordName + ".html"; final String imagePath = htmlPath + "image" + File.separator; // 判断html文件是否存在 File htmlFile = new File(htmlPath + htmlName); if (htmlFile.exists()) { return htmlFile.getAbsolutePath(); } // 原word文档 final String file = wordPath + File.separator + wordName + suffix; InputStream input = new FileInputStream(new File(file)); HWPFDocument wordDocument = new HWPFDocument(input); 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) { File imgPath = new File(imagePath); if (!imgPath.exists()) {// 图片目录不存在则创建 imgPath.mkdirs(); } File file = new File(imagePath + suggestedName); try { OutputStream os = new FileOutputStream(file); os.write(content); os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 图片在html文件上的路径 相对路径 return "image/" + suggestedName; } }); // 解析word文档 wordToHtmlConverter.processDocument(wordDocument); Document htmlDocument = wordToHtmlConverter.getDocument(); // 生成html文件上级文件夹 File folder = new File(htmlPath); if (!folder.exists()) { folder.mkdirs(); } OutputStream outStream = new FileOutputStream(htmlFile); DOMSource domSource = new DOMSource(htmlDocument); StreamResult streamResult = new StreamResult(outStream); TransformerFactory factory = TransformerFactory.newInstance(); Transformer serializer = factory.newTransformer(); serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); serializer.setOutputProperty(OutputKeys.INDENT, "yes"); serializer.setOutputProperty(OutputKeys.METHOD, "html"); serializer.transform(domSource, streamResult); return htmlFile.getAbsolutePath(); } /** * * 2007版本word转换成html * * @param wordPath word文件路径 * @param wordName word文件名称无后缀 * @param suffix word文件后缀 * @param htmlPath html存储地址 * @return * @throws IOException */ public static String Word2007ToHtml(String wordPath, String wordName, String suffix, String htmlPath) throws IOException { String htmlName = wordName + ".html"; String imagePath = htmlPath + "image" + File.separator; // 判断html文件是否存在 File htmlFile = new File(htmlPath + htmlName); if (htmlFile.exists()) { return htmlFile.getAbsolutePath(); } // word文件 File wordFile = new File(wordPath + File.separator + wordName + suffix); // 1) 加载word文档生成 XWPFDocument对象 InputStream in = new FileInputStream(wordFile); XWPFDocument document = new XWPFDocument(in); // 2) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录) File imgFolder = new File(imagePath); XHTMLOptions options = XHTMLOptions.create(); options.setExtractor(new FileImageExtractor(imgFolder)); // html中图片的路径 相对路径 options.URIResolver(new BasicURIResolver("image")); options.setIgnoreStylesIfUnused(false); options.setFragment(true); // 3) 将 XWPFDocument转换成XHTML // 生成html文件上级文件夹 File folder = new File(htmlPath); if (!folder.exists()) { folder.mkdirs(); } OutputStream out = new FileOutputStream(htmlFile); XHTMLConverter.getInstance().convert(document, out, options); return htmlFile.getAbsolutePath(); } public static void main(String[] args) { try { //Word2003ToHtml("E:\\templates", "2019-11-26", ".doc", "E://templates/"); Word2007ToHtml("E:\\templates", "OnLineWord", ".doc", "E://templates/"); } catch (Exception e) { e.printStackTrace(); } } }
benr本人业务定制版本:
package com.mmxpw.mmw.file.view.word; import org.apache.commons.fileupload.FileItem; 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.usermodel.PictureType; import org.apache.poi.xwpf.converter.core.BasicURIResolver; import org.apache.poi.xwpf.converter.core.FileImageExtractor; import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter; import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.w3c.dom.Document; 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 java.io.*; import java.util.ArrayList; import java.util.List; /** * @Class WordToHtmlNew * @Version 1.0 * @Date 创建时间:2019-12-02 09:29 * @Direction 类说明 传入文件,自动识别2003版本或者07版本,然后解析成HTML,且自动解析里面的图片,然后对图片做本地化存储,然后返回HTML */ public class WordToHtmlNew { public final static List<String> FILE_TYPE = new ArrayList<>() ; static{ FILE_TYPE.add( "doc" ) ; FILE_TYPE.add( "docx" ) ; } /*** * 文件格式处理 * @param fileItem * @return * @throws Exception */ public static boolean fileTypeValidate( File fileItem ) throws Exception{ String[] namePix = fileItem.getName().split("\\u002E"); String suffix = namePix[namePix.length-1] ; if( !FILE_TYPE.contains( suffix ) ){ throw new Exception( "您导入的文件格式错误,请导入word类型的文件." ) ; }else{ return true ; } } /**** * 判断文档的类型 本方法判断的是是否是新版 * @param fileItem * @return */ public static boolean isDocx( File fileItem ){ String[] namePix = fileItem.getName().split("\\u002E"); String suffix = namePix[namePix.length-1] ; if( suffix.toLowerCase().equals( "docx" )){ return true ; }else{ return false ; } } /**** * 自动识别版本 * 自动生成word内部的图片 * 自动过滤其他的类型文件 * 自动添加不通模块的图片前缀 * @param file * @param iamgePrefix 在file的同级创建文件夹-image 提取word内部图片前缀为传入值:prefix * @param accessPath html访问路径的url为:accessPath * @return */ public static String WordAutoToHtml( File file , String iamgePrefix , String accessPath ) throws Exception { if( file == null ){ throw new Exception( "您传入的文件为空." ) ; }else{ if( !file.exists() ){ throw new Exception( "您传入的文件不存在." ) ; }else{ if ( fileTypeValidate( file ) ){ //1.1 开始提取文件名称,文件路径 String path = file.getParent() ; String fileName = file.getName() ; //切割文件名里面的信息 String prefix = fileName.substring( 0 , fileName.lastIndexOf(".") ); String suffix = fileName.substring( fileName.lastIndexOf(".") + 1 ); /*String[] namePix = fileName.split("\\u002E"); String suffix = namePix[namePix.length-1] ;*/ //1.2 开始做文件识别,然后指向去2007版本的docx 还是去2003版本的doc path = path + File.separator ; if( isDocx( file ) ){ return Word2007ToHtml( file , path , prefix , path , iamgePrefix , accessPath ) ; }else{ return Word2003ToHtml( file , path , prefix , path , iamgePrefix , accessPath ) ; } } } } return null ; } /** * 将word2003转换为html文件 * * @param wordFile word文件 * @param wordPath word文件路径 * @param wordName word文件名称无后缀 * @param htmlPath html存储地址 * @param prefix 图片存储前缀 * @param accessPath 图片的相对路径访问地址 * @throws IOException * @throws TransformerException * @throws ParserConfigurationException */ public static String Word2003ToHtml(File wordFile , String wordPath, String wordName, String htmlPath ,final String prefix ,final String accessPath) throws IOException, TransformerException, ParserConfigurationException { String htmlName = wordName + ".html"; //1.1 判断html文件是否存在 File htmlFile = new File(htmlPath + htmlName); if (htmlFile.exists()) { return htmlFile.getAbsolutePath(); } //1.2 原word文档 - 文件路径信息 //final String file = wordPath + File.separator + wordName + "." + suffix; //InputStream input = new FileInputStream( new File( wordFile ) ); InputStream input = new FileInputStream( wordFile ); //1.3 final String imagePath final String imagePath = wordPath + "image" ; HWPFDocument wordDocument = new HWPFDocument(input); 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) { File imgPath = new File(imagePath); if (!imgPath.exists()) {// 图片目录不存在则创建 imgPath.mkdirs(); } String imageFileName = prefix + suggestedName ; File file = new File(imagePath + File.separator + imageFileName ); try { OutputStream os = new FileOutputStream(file); os.write(content); os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 图片在html文件上的路径 相对路径 return accessPath + imageFileName; } }); // 解析word文档 wordToHtmlConverter.processDocument(wordDocument); Document htmlDocument = wordToHtmlConverter.getDocument(); // 生成html文件上级文件夹 File folder = new File(htmlPath); if (!folder.exists()) { folder.mkdirs(); } OutputStream outStream = new FileOutputStream(htmlFile); DOMSource domSource = new DOMSource(htmlDocument); StreamResult streamResult = new StreamResult(outStream); TransformerFactory factory = TransformerFactory.newInstance(); Transformer serializer = factory.newTransformer(); serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); serializer.setOutputProperty(OutputKeys.INDENT, "yes"); serializer.setOutputProperty(OutputKeys.METHOD, "html"); serializer.transform(domSource, streamResult); return htmlFile.getAbsolutePath(); } /** * 2007版本word转换成html * * @param wordPath word文件路径 * @param wordName word文件名称无后缀 * @param suffix word文件后缀 * @param htmlPath html存储地址 * @param prefix 图片存储前缀 * @param accessPath 图片的相对路径访问地址 * @return * @throws IOException */ public static String Word2007ToHtml( File wordFile , String wordPath, String wordName, String htmlPath ,final String prefix ,final String accessPath) throws IOException, TransformerException, ParserConfigurationException { String htmlName = wordName + ".html"; //1.1) 拼接HTML文件地址、判断html文件是否存在 File htmlFile = new File(htmlPath + htmlName); if (htmlFile.exists()) { return htmlFile.getAbsolutePath(); } // word文件 //File wordFile = new File(wordPath + File.separator + wordName + suffix); //1.2) 加载word文档生成 XWPFDocument对象 InputStream in = new FileInputStream( wordFile ); XWPFDocument document = new XWPFDocument( in ); //1.3) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录) final String imagePath = wordPath + "image" ; File imgFolder = new File( imagePath ); XHTMLOptions options = XHTMLOptions.create(); options.setExtractor(new FileImageExtractor(imgFolder)); // html中图片的路径 相对路径 options.URIResolver( new BasicURIResolver( accessPath ) ); options.setIgnoreStylesIfUnused(false); options.setFragment(true); //1.4) 将 XWPFDocument转换成XHTML // 生成html文件上级文件夹 File folder = new File(htmlPath); if (!folder.exists()) { folder.mkdirs(); } OutputStream out = new FileOutputStream(htmlFile); XHTMLConverter.getInstance().convert(document, out, options); return htmlFile.getAbsolutePath(); } public static void main(String[] args) { try { //Word2003ToHtml("E:\\templates", "2019-11-26", ".doc", "E://templates/"); WordAutoToHtml( new File("E:\\templates\\OnLineWord.doc") , "image_" , "image/"); //WordAutoToHtml( new File("E:\\templates\\OnLineWord.docx") , "image_" , "image/"); } catch (Exception e) { e.printStackTrace(); } } }
第三步:使用结果
2007版本:Word文档样式
实际转换结果为:图片的居中,字体等信息自动换行效果不理想。
2003版本的Word文档也有上述问题,大家使用此技术时请注意此问题。
参考来源:Java实现word转HTML
-
java使用jacob将word,excel,ppt转成html
2020-03-06 13:55:39java使用jacob将word,excel,ppt转成html,代码和所需的jar都在压缩包,项目需求实现后分享下 -
java实现HTML转Word
2022-03-28 22:31:53java实现HTML转Word