JAVA调用POI实现WORD转HTML
- 格式:pdf
- 大小:83.93 KB
- 文档页数:4
JAVA读取WORD文档解决方案在Java中读取Word文档需要使用特定的Java库或API来解析和处理Word文档格式(.doc或.docx)。
在下面的解决方案中,我们将介绍两种流行的Java库,即Apache POI和JavaFX的XSSF。
1. Apache POI:Apache POI是一个流行的开源Java库,用于处理Microsoft Office 格式的文件,包括Word文档。
下面是使用Apache POI库读取Word文档的步骤:1.1 添加Apache POI依赖库到项目中。
在Maven项目中,可以在pom.xml文件中添加以下依赖项:```xml<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>```1.2 使用`XWPFDocument`类打开Word文档。
下面是一个示例代码:```javaFileInputStream fis = newFileInputStream("path/to/word/document.docx");XWPFDocument document = new XWPFDocument(fis);fis.close(;```1.3 使用`XWPFParagraph`类和`XWPFRun`类来遍历Word文档中的段落和文本。
POI转换worddoc⽂件为(html,xml,txt)在POI中还存在有针对于word doc⽂件进⾏格式转换的功能。
我们可以将word的内容转换为对应的Html⽂件,也可以把它转换为底层⽤来描述doc⽂档的xml⽂件,还可以把它转换为底层⽤来描述doc⽂档的xml格式的text⽂件。
这些格式转换都是通过AbstractWordConverter特定的⼦类来完成的。
1 转换为Html⽂件将doc⽂档转换为对应的Html⽂档是通过WordToHtmlConverter类进⾏的。
它会尽量的利⽤Html的⽅式来呈现原⽂档的样式。
⽰例代码:/*** Word转换为Html* @throws Exception*/@Testpublic void testWordToHtml() throws Exception {InputStream is = new FileInputStream("D:\\test.doc");HWPFDocument wordDocument = new HWPFDocument(is);WordToHtmlConverter converter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());//对HWPFDocument进⾏转换converter.processDocument(wordDocument);Writer writer = new FileWriter(new File("D:\\converter.html"));Transformer transformer = TransformerFactory.newInstance().newTransformer();transformer.setOutputProperty( OutputKeys.ENCODING, "utf-8" );//是否添加空格transformer.setOutputProperty( OutputKeys.INDENT, "yes" );transformer.setOutputProperty( OutputKeys.METHOD, "html" );transformer.transform(new DOMSource(converter.getDocument() ),new StreamResult( writer ) );}2 转换为Xml⽂件将doc⽂档转换为对应的Xml⽂件是通过WordToFoConverter类进⾏的。
java用poi实现对word读取和修改操作新增WordUtil类,将代码拷进去直接运行即可package com.cjhxfund.ats.fm.instr;import java.io.FileOutputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import org.apache.poi.POIXMLDocument;import ermodel.XWPFDocument;import ermodel.XWPFParagraph;import ermodel.XWPFRun;import ermodel.XWPFTable;import ermodel.XWPFTableCell;import ermodel.XWPFTableRow;public class WordUtil {public static void searchAndReplace(String srcPath, String destPath,Map<String, String> map) {try {XWPFDocument document = newXWPFDocument(POIXMLDocument.openPackage(srcPath));// 替换段落中的指定文字Iterator<XWPFParagraph> itPara =document.getParagraphsIterator();while (itPara.hasNext()) {XWPFParagraph paragraph = (XWPFParagraph) itPara.next();//String s = paragraph.getParagraphText();Set<String> set = map.keySet();Iterator<String> iterator = set.iterator();while (iterator.hasNext()) {String key = iterator.next();List<XWPFRun> runs=paragraph.getRuns();for (XWPFRun run : runs) {String text = run.getText(0);if(text != null){//String runText = run.toString();if(text.indexOf(key) != -1){text = text.replace(key, map.get(key));System.out.println("key=="+key+"~~~~runText=="+text);run.setText(text,0);}}}}}// 替换表格中的指定文字Iterator<XWPFTable> itTable =document.getTablesIterator();while (itTable.hasNext()) {XWPFTable table = (XWPFTable) itTable.next();int rcount = table.getNumberOfRows();for (int i = 0; i < rcount; i++) {XWPFTableRow row = table.getRow(i);List<XWPFTableCell> cells = row.getTableCells();for (XWPFTableCell cell : cells) {for(Entry<String, String> e : map.entrySet()) {if (cell.getText().equals(e.getKey())) { cell.removeParagraph(0);cell.setText(e.getValue());}}}}}FileOutputStream outStream = null;outStream = new FileOutputStream(destPath);document.write(outStream);outStream.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {Map<String, String> map = new HashMap<String, String>();map.put("附件", "文件");map.put("结果", "结束");//map.put("金额", "数量");String srcPath = "D:\\10\\测试java读取【word】文档内容_V1.0.doc";String destPath = "D:\\10\\out.doc";searchAndReplace(srcPath, destPath, map);}}。
xwpfdocument doc转xwpfdocument是Apache POI库中的一个类,用于处理Microsoft Word文档(.docx)的读写操作。
在本篇文章中,我们将讨论如何使用xwpfdocument类将Word文档转换为其他格式。
1. 简介xwpfdocument是POI库中的核心类之一,它提供了一系列方法来读取、写入和修改Word文档。
这个类可以打开一个已存在的文档,也可以创建一个新的文档。
通过操作xwpfdocument对象,我们可以对文档的内容、样式和布局进行编辑。
2. 转换为PDF格式在许多情况下,我们希望将Word文档转换为PDF格式,以便在不同平台上进行共享和打印。
为了实现这个目标,我们可以使用Apache PDFBox库。
以下是一个示例代码,将一个.docx文档转换为.pdf格式。
```javaimport ermodel.XWPFDocument;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.text.PDFTextStripper;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class WordToPDFConverter {public static void main(String[] args) {try {// 读取Word文档FileInputStream fis = new FileInputStream("input.docx");XWPFDocument document = new XWPFDocument(fis);// 创建PDF文档PDDocument pdfDoc = new PDDocument();PDPage page = new PDPage();pdfDoc.addPage(page);// 获取Word文档的内容String content = new XWPFWordExtractor(document).getText();// 将内容写入PDF文档PDPageContentStream contentStream = new PDPageContentStream(pdfDoc, page);contentStream.beginText();contentStream.setFont(PDType1Font.TIMES_ROMAN, 12); contentStream.newLineAtOffset(100, 700);contentStream.showText(content);contentStream.endText();contentStream.close();// 保存PDF文档pdfDoc.save(new FileOutputStream("output.pdf"));pdfDoc.close();// 关闭Word文档document.close();fis.close();System.out.println("Word文档已成功转换为PDF格式。
javaword⽂档转html⽂件⼀、简介 ⼀般word⽂件后缀有doc、docx两种。
docx是office word 2007以及以后版本⽂档的扩展名;doc是office word 2003⽂档保存的扩展名。
对于这两种格式的word转换成html需要使⽤不同的⽅法。
对于docx格式的⽂档使⽤xdocreport进⾏转换。
依赖如下:<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.document</artifactId><version>1.0.5</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId><version>1.0.5</version></dependency>对于docx格式的⽂档使⽤poi进⾏转换。
依赖如下:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.12</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.12</version></dependency>⼆:⽰例 代码⽰例如下:1package com.test.word;23import java.io.File;4import java.io.FileInputStream;5import java.io.FileNotFoundException;6import java.io.FileOutputStream;7import java.io.IOException;8import java.io.InputStream;9import java.io.OutputStream;1011import javax.xml.parsers.DocumentBuilderFactory;12import javax.xml.parsers.ParserConfigurationException;13import javax.xml.transform.OutputKeys;14import javax.xml.transform.Transformer;15import javax.xml.transform.TransformerException;16import javax.xml.transform.TransformerFactory;17import javax.xml.transform.dom.DOMSource;18import javax.xml.transform.stream.StreamResult;1920import org.apache.poi.hwpf.HWPFDocument;21import org.apache.poi.hwpf.converter.PicturesManager;22import org.apache.poi.hwpf.converter.WordToHtmlConverter;23import ermodel.PictureType;24import org.apache.poi.xwpf.converter.core.FileImageExtractor;25import org.apache.poi.xwpf.converter.core.FileURIResolver;26import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;27import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;28import ermodel.XWPFDocument;29import org.junit.Test;30import org.w3c.dom.Document;3132/**33 * word 转换成html34*/35public class WordToHtml {3637/**38 * 2007版本word转换成html39 * @throws IOException40*/41 @Test42public void Word2007ToHtml() throws IOException {43 String filepath = "C:/test/";44 String fileName = "滕王阁序2007.docx";45 String htmlName = "滕王阁序2007.html";46final String file = filepath + fileName;47 File f = new File(file);48if (!f.exists()) {49 System.out.println("Sorry File does not Exists!");50 } else {51if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {5253// 1) 加载word⽂档⽣成 XWPFDocument对象54 InputStream in = new FileInputStream(f);55 XWPFDocument document = new XWPFDocument(in);5657// 2) 解析 XHTML配置 (这⾥设置IURIResolver来设置图⽚存放的⽬录)58 File imageFolderFile = new File(filepath);59 XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile));60 options.setExtractor(new FileImageExtractor(imageFolderFile));61 options.setIgnoreStylesIfUnused(false);62 options.setFragment(true);6364// 3) 将 XWPFDocument转换成XHTML65 OutputStream out = new FileOutputStream(new File(filepath + htmlName));66 XHTMLConverter.getInstance().convert(document, out, options);6768//也可以使⽤字符数组流获取解析的内容69// ByteArrayOutputStream baos = new ByteArrayOutputStream();70// XHTMLConverter.getInstance().convert(document, baos, options);71// String content = baos.toString();72// System.out.println(content);73// baos.close();74 } else {75 System.out.println("Enter only MS Office 2007+ files");76 }77 }78 }7980/**81 * /**82 * 2003版本word转换成html83 * @throws IOException84 * @throws TransformerException85 * @throws ParserConfigurationException86*/87 @Test88public void Word2003ToHtml() throws IOException, TransformerException, ParserConfigurationException {89 String filepath = "C:/test/";90final String imagepath = "C:/test/image/";91 String fileName = "滕王阁序2003.doc";92 String htmlName = "滕王阁序2003.html";93final String file = filepath + fileName;94 InputStream input = new FileInputStream(new File(file));95 HWPFDocument wordDocument = new HWPFDocument(input);96 WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); 97//设置图⽚存放的位置98 wordToHtmlConverter.setPicturesManager(new PicturesManager() {99public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {100 File imgPath = new File(imagepath);101if(!imgPath.exists()){//图⽚⽬录不存在则创建102 imgPath.mkdirs();103 }104 File file = new File(imagepath + suggestedName);105try {106 OutputStream os = new FileOutputStream(file);107 os.write(content);108 os.close();109 } catch (FileNotFoundException e) {110 e.printStackTrace();111 } catch (IOException e) {112 e.printStackTrace();113 }114return imagepath + suggestedName;115 }116 });117118//解析word⽂档119 wordToHtmlConverter.processDocument(wordDocument);120 Document htmlDocument = wordToHtmlConverter.getDocument();121122 File htmlFile = new File(filepath + htmlName);123 OutputStream outStream = new FileOutputStream(htmlFile);124125//也可以使⽤字符数组流获取解析的内容126// ByteArrayOutputStream baos = new ByteArrayOutputStream();127// OutputStream outStream = new BufferedOutputStream(baos);128129 DOMSource domSource = new DOMSource(htmlDocument);130 StreamResult streamResult = new StreamResult(outStream);131132 TransformerFactory factory = TransformerFactory.newInstance(); 133 Transformer serializer = factory.newTransformer();134 serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); 135 serializer.setOutputProperty(OutputKeys.INDENT, "yes");136 serializer.setOutputProperty(OutputKeys.METHOD, "html"); 137138 serializer.transform(domSource, streamResult);139140//也可以使⽤字符数组流获取解析的内容141// String content = baos.toString();142// System.out.println(content);143// baos.close();144 outStream.close();145 }146 } 运⾏⽣存⽂件结果如下:。
Java在线预览方案在现代Web应用程序中,我们经常需要对各种文档格式进行在线预览。
尤其是对于Java开发人员来说,如何实现Java在线预览方案是一个常见的问题。
本文将介绍一些常用的Java在线预览方案,以帮助开发人员选择适合自己项目的解决方案。
方案一:使用第三方工具库第一种方案是使用第三方开源工具库来实现Java在线预览。
这些工具库通常提供了丰富的API和工具,可以轻松地将各种文档格式转换为可预览的HTML或其他格式。
以下是一些常用的第三方工具库:Apache POIApache POI是一个Java类库,用于读取和写入Microsoft Office格式的文档。
它支持预览.doc、.docx、.xls、.xlsx等文件格式,并提供了用于将这些文件转换为HTML的API。
使用Apache POI,开发人员可以轻松地将Office文档转换为HTML,并在Web应用程序中进行在线预览。
PDFBoxPDFBox是一个用于处理PDF文件的Java库。
它可以读取和写入PDF文件,并提供了将PDF文档转换为图片或HTML的功能。
使用PDFBox,开发人员可以将PDF文件转换为HTML,并在Web应用程序中进行在线预览。
Apache TikaApache Tika是一个Java工具库,用于提取和分析文档中的元数据和内容。
它支持广泛的文档格式,包括Word文档、Excel文件、PDF文件等。
开发人员可以使用Apache Tika从不同的文档格式中提取内容,并将其转换为HTML进行在线预览。
方案二:使用在线预览服务另一种方案是使用在线预览服务来实现Java在线预览。
在线预览服务通常是基于云服务提供的,开发人员可以通过API将文档上传到服务中进行预览。
以下是一些常用的在线预览服务:Google Docs ViewerGoogle Docs Viewer是一个由Google提供的在线预览服务。
它支持多种文档格式,包括Word文档、Excel文件、PDF文件等。
java实现在线预览- -之poi实现word、excel、ppt转htmljava实现在线预览- -之poi实现word、excel、ppt转html简介java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office、office web365(/)他们都有云在线预览服务,就是要钱0.0如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools、FlexPaper等)才行,可参考这篇文章/z69183787/article/details/17468039,写的挺细的,实现原理就是:1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件;2.通过swfTools将pdf文件转换成swf格式的文件;3.通过FlexPaper文档组件在页面上进行展示。
当然如果装了Adobe Reader XI,那把pdf直接拖到浏览器页面就可以直接打开预览,这样就不需要步骤2、3了,前提就是客户装了Adobe Reader XI这个pdf阅读器。
我这里介绍通过poi实现word、excel、ppt转html,这样就可以放在页面上了。
word转htmlpackage wordToHtml;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.util.List;import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import mons.io.FileUtils;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.converter.PicturesManager; importorg.apache.poi.hwpf.converter.WordToHtmlConverter; import ermodel.Picture;import ermodel.PictureType; import org.w3c.dom.Document;public class PoiWordToHtml {public static void main(String[] args) throws Throwable { final String path = "D:\\poi-test\\wordToHtml\\";final String file = "人员选择系分.doc";InputStream input = new FileInputStream(path + file); HWPFDocument wordDocument = new HWPFDocument(input);WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuil der().newDocument());wordToHtmlConverter.setPicturesManager(new PicturesManager() {public String savePicture(byte[] content, PictureType pictureType,String suggestedName, float widthInches, float heightInches) {return 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);try {pic.writeImageContent(new FileOutputStream(path+ pic.suggestFullFileName()));} catch (FileNotFoundException e) {e.printStackTrace();}}}Document htmlDocument = wordToHtmlConverter.getDocument(); ByteArrayOutputStream outStream = new ByteArrayOutputStream();DOMSource domSource = newDOMSource(htmlDocument);StreamResult streamResult = newStreamResult(outStream);TransformerFactory tf =TransformerFactory.newInstance();Transformer serializer = tf.newTransformer(); serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty(OutputKeys.METHOD, "html");serializer.transform(domSource, streamResult); outStream.close();String content = new String(outStream.toByteArray());FileUtils.writeStringToFile(new File(path, "人员选择系分.html"), content, "utf-8");}}1234567891011121314151617181920212223242526272 8293031323334353637383940414243444546474849505 15253545556575859606162636465excel转htmlpackage excelToHtml;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.List;import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import mons.io.FileUtils;importorg.apache.poi.hssf.converter.ExcelToHtmlConverter; import ermodel.HSSFWorkbook; import org.apache.poi.hwpf.converter.PicturesManager; importorg.apache.poi.hwpf.converter.WordToHtmlConverter; import ermodel.Picture;import ermodel.PictureType; import org.w3c.dom.Document;public class PoiExcelToHtml {final static String path = "D:\\poi-test\\excelToHtml\\";final static String file = "exportExcel.xls";public static void main(String args[]) throws Exception {InputStream input=new FileInputStream(path+file);HSSFWorkbook excelBook=newHSSFWorkbook(input);ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBu ilder().newDocument() );excelToHtmlConverter.processWorkbook(excelBook);List pics = excelBook.getAllPictures();if (pics != null) {for (int i = 0; i < pics.size(); i++) {Picture pic = (Picture) pics.get (i);try {pic.writeImageContent (new FileOutputStream (path + pic.suggestFullFileName() ) );} catch (FileNotFoundException e) {e.printStackTrace();}}}Document htmlDocument=excelToHtmlConverter.getDocument();ByteArrayOutputStream outStream = newByteArrayOutputStream();DOMSource domSource = new DOMSource (htmlDocument);StreamResult streamResult = new StreamResult (outStream);TransformerFactory tf =TransformerFactory.newInstance();Transformer serializer = tf.newTransformer();serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");serializer.setOutputProperty (OutputKeys.INDENT, "yes");serializer.setOutputProperty (OutputKeys.METHOD, "html");serializer.transform (domSource, streamResult);outStream.close();String content = new String(outStream.toByteArray() );FileUtils.writeStringToFile(new File (path, "exportExcel.html"), content, "utf-8");}}1234567891011121314151617181920212223242526272 8293031323334353637383940414243444546474849505 15253545556575859606162636465ppt转html其实只是ppt转图片,有了图片后放到页面上去,点击下一页就一张张显示就可以了。
Java使⽤poi将word转换为html 使⽤poi将word转换为html,⽀持doc,docx,转换后可以保持图⽚、样式。
1.导⼊Maven包<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version></dependency><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>2.转换代码import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.converter.WordToHtmlConverter;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 ermodel.XWPFDocument;import org.w3c.dom.Document;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.OutputStreamWriter;public class Test {// doc转换为htmlvoid docToHtml() throws Exception {String sourceFileName = "C:\\doc\\test.doc";String targetFileName = "C:\\html\\test.html";String imagePathStr = "C:\\html\\image\\";HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(sourceFileName));Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(document);// 保存图⽚,并返回图⽚的相对路径wordToHtmlConverter.setPicturesManager((content, pictureType, name, width, height) -> {try(FileOutputStream out = new FileOutputStream(imagePathStr + name)){out.write(content);} catch (Exception e) {e.printStackTrace();}return "image/" + name;});wordToHtmlConverter.processDocument(wordDocument);Document htmlDocument = wordToHtmlConverter.getDocument();DOMSource domSource = new DOMSource(htmlDocument);StreamResult streamResult = new StreamResult(new File(targetFileName));TransformerFactory tf = TransformerFactory.newInstance();Transformer serializer = tf.newTransformer();serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8");serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty(OutputKeys.METHOD, "html");serializer.transform(domSource, streamResult);}// docx转换为htmlpublic void docxToHtml() throws Exception {String sourceFileName = "D:\\ac\\00.docx";String targetFileName = "D:\\ac\\test.html";String imagePathStr = "D:\\ac\\image\\";OutputStreamWriter outputStreamWriter = null;try {XWPFDocument document = new XWPFDocument(new FileInputStream(sourceFileName));XHTMLOptions options = XHTMLOptions.create();// 存放图⽚的⽂件夹options.setExtractor(new FileImageExtractor(new File(imagePathStr)));// html中图⽚的路径options.URIResolver(new BasicURIResolver("image"));outputStreamWriter = new OutputStreamWriter(new FileOutputStream(targetFileName), "utf-8"); XHTMLConverter xhtmlConverter = (XHTMLConverter) XHTMLConverter.getInstance();xhtmlConverter.convert(document, outputStreamWriter, options);} finally {if (outputStreamWriter != null) {outputStreamWriter.close();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Java 将Word转为PDF/Html/图片/XPS/SVG(基于Spire.Cloud.SDK for Java)Spire.Cloud.SDK for Java API提供了ConverApi接口支持将Word文档转换为多种文档格式,包括将Word转为PDF、Html、位图Bitmap(JPEG/BMP/ PNG)、矢量图Vectorgraph(支持WMF/SVG)、XPS、PostScript、PCL、dotx、dotm、docm、odt、wordxml、wordml、doc、docx、rtf、epub等等。
下面将详细介绍如何来实现转换。
步骤一、导入jar文件创建Maven项目程序,通过maven仓库下载导入。
以IDEA为例,新建Maven项目,在pom.xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下:<repositories><repository><id>com.e-iceblue</id><name>cloud</name><url>/repository/maven-public/</url></repository></repositories><dependencies><dependency><groupId> cloud </groupId><artifactId>spire.cloud.sdk</artifactId><version>3.5.0</version></dependency><dependency><groupId> com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.1</version></dependency><dependency><groupId> com.squareup.okhttp</groupId><artifactId>logging-interceptor</artifactId><version>2.7.5</version></dependency><dependency><groupId> com.squareup.okhttp </groupId><artifactId>okhttp</artifactId><version>2.7.5</version></dependency><dependency><groupId> com.squareup.okio </groupId><artifactId>okio</artifactId><version>1.6.0</version></dependency><dependency><groupId> io.gsonfire</groupId><artifactId>gson-fire</artifactId><version>1.8.0</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.18</version></dependency><dependency><groupId> org.threeten </groupId><artifactId>threetenbp</artifactId><version>1.3.5</version></dependency></dependencies>完成配置后,点击“Import Changes” 即可导入所有需要的jar文件。
POI读取word(word2003和word2007)(转)最近在给客户做系统的时候,⽤户提出需求,要能够导⼊ word ⽂件,现在 microsoft word 有好⼏个版本 97、2003、2007的,这三个版本存储数据的格式上都有相当⼤的差别,⽽现在 97 基本上已经退出市场,⼏乎没有⼈⽤这个版本了,所以在我们的系统中只考虑 2003 版本和 2007 版本的,因为我们只要求能够读取 word 中的⽂字内容即可,其中的⽂字样式、图⽚等信息可以忽略,也不⽤直接操作 word ⽂件,所以我们选择⽤ apache 的 POI 进⾏读取。
读取 2003 版本(.doc)的word⽂件相对来说⽐较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个jar 包即可,⽽ 2007 版本(.docx)就⿇烦多,我说的这个⿇烦不是我们写代码的时候⿇烦,是要导⼊的 jar 包⽐较的多,有如下 7 个之多: 1. openxml4j-bin-beta.jar 2. poi-3.5-beta6-20090622.jar 3. poi-ooxml-3.5-beta6-20090622.jar 4 .dom4j-1.6.1.jar 5. geronimo-stax-api_1.0_spec-1.0.jar 6. ooxml-schemas-1.0.jar 7. xmlbeans-2.3.0.jar 其中 4-7 是 poi-ooxml-3.5-beta6-20090622.jar 所依赖的 jar 包(在poi-bin-3.5-beta6-20090622.tar.gz 中的 ooxml-lib ⽬录下可以找到)。
[java]1. import java.io.File;2. import java.io.FileInputStream;3. import java.io.InputStream;4.5. import org.apache.poi.POIXMLDocument;6. import org.apache.poi.POIXMLTextExtractor;7. import org.apache.poi.hwpf.extractor.WordExtractor;8. import org.apache.poi.openxml4j.opc.OPCPackage;9. import org.apache.poi.xwpf.extractor.XWPFWordExtractor;10.11. /**12. * POI 读取 word 2003 和 word 2007 中⽂字内容的测试类<br />13. * @createDate 2009-07-2514. * @author Carl He15. */16. public class Test {17. public static void main(String[] args) {18. try {19. //word 2003:图⽚不会被读取20. InputStream is = new FileInputStream(new File("c://files//2003.doc"));21. WordExtractor ex = new WordExtractor(is);22. String text2003 = ex.getText();23. System.out.println(text2003);24.25. //word 2007 图⽚不会被读取,表格中的数据会被放在字符串的最后26. OPCPackage opcPackage = POIXMLDocument.openPackage("c://files//2007.docx");27. POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);28. String text2007 = extractor.getText();29. System.out.println(text2007);30.31. } catch (Exception e) {32. e.printStackTrace();33. }34. }35. }如果想下载完整的⽰例代码,可以,这个 rar 包中有 POI 读取word 2003 和 word 2007 所需要的全部 jar 包和 word 2003、word 2007 ⽰例⽂件。