Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例
引言:
最近公司在做一個(gè)教育培訓(xùn)學(xué)習(xí)及在線考試的項(xiàng)目,本人主要從事網(wǎng)絡(luò)課程模塊,主要做課程分類,課程,課件的創(chuàng)建及在線學(xué)習(xí)和統(tǒng)計(jì)的功能,因?yàn)檎n件涉及到多種類型,像視頻,音頻,圖文,外部鏈接及文檔類型.其中就涉及到一個(gè)問題,就是文檔型課件課程在網(wǎng)頁(yè)上的展示和學(xué)習(xí)問題,因?yàn)橐诰€統(tǒng)計(jì)學(xué)習(xí)的課程,學(xué)習(xí)的人員,學(xué)習(xí)的時(shí)長(zhǎng),所以不能像傳統(tǒng)做法將文檔下載到本地學(xué)習(xí),那樣就不受系統(tǒng)控制了,所以最終的方案是,在上傳文檔型課件的時(shí)候,將其文件對(duì)應(yīng)的轉(zhuǎn)換成HTML文件,以便在網(wǎng)頁(yè)上能夠?yàn)g覽學(xué)習(xí)
下邊主要針對(duì)word,pdf和txt文本文件進(jìn)行轉(zhuǎn)換
一:Java實(shí)現(xiàn)將word轉(zhuǎn)換為html
1:引入依賴
<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> <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>
2:代碼demo
package com.svse.controller; 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.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.core.FileURIResolver; import org.apache.poi.xwpf.converter.core.IURIResolver; import org.apache.poi.xwpf.converter.core.IXWPFConverter; import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter; import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions; import org.apache.poi.xwpf.usermodel.XWPFDocument; /** * word 轉(zhuǎn)換成html */ public class TestWordToHtml { public static final String STORAGEPATH="C://works//files//"; public static final String IP="192.168.30.222"; public static final String PORT="8010"; public static void main(String[] args) throws IOException, TransformerException, ParserConfigurationException { TestWordToHtml wt=new TestWordToHtml(); //wt.Word2003ToHtml("甲骨文考證.doc"); wt.Word2007ToHtml("甲骨文考證.docx"); } /** * 2003版本word轉(zhuǎn)換成html * @throws IOException * @throws TransformerException * @throws ParserConfigurationException */ public void Word2003ToHtml(String fileName) throws IOException, TransformerException, ParserConfigurationException { final String imagepath = STORAGEPATH+"fileImage/";//解析時(shí)候如果doc文件中有圖片 圖片會(huì)保存在此路徑 final String strRanString=getRandomNum(); String filepath =STORAGEPATH; String htmlName =fileName.substring(0, fileName.indexOf("."))+ "2003.html"; final String file = filepath + fileName; InputStream input = new FileInputStream(new File(file)); HWPFDocument wordDocument = new HWPFDocument(input); WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); //設(shè)置圖片存放的位置 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()){//圖片目錄不存在則創(chuàng)建 imgPath.mkdirs(); } File file = new File(imagepath +strRanString+suggestedName); try { OutputStream os = new FileOutputStream(file); os.write(content); os.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "http://"+IP+":"+PORT+"http://uploadFile/fileImage/"+strRanString+suggestedName; // return imagepath +strRanString+suggestedName; } }); //解析word文檔 wordToHtmlConverter.processDocument(wordDocument); Document htmlDocument = wordToHtmlConverter.getDocument(); File htmlFile = new File(filepath +strRanString+htmlName); 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); outStream.close(); System.out.println("生成html文件路徑:"+ "http://"+IP+":"+PORT+"http://uploadFile/"+strRanString+htmlName); } /** * 2007版本word轉(zhuǎn)換成html * @throws IOException */ public void Word2007ToHtml(String fileName) throws IOException { final String strRanString=getRandomNum(); String filepath = STORAGEPATH+strRanString; String htmlName =fileName.substring(0, fileName.indexOf("."))+ "2007.html"; File f = new File(STORAGEPATH+fileName); if (!f.exists()) { System.out.println("Sorry File does not Exists!"); } else { if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) { try { // 1) 加載word文檔生成 XWPFDocument對(duì)象 InputStream in = new FileInputStream(f); XWPFDocument document = new XWPFDocument(in); // 2) 解析 XHTML配置 (這里設(shè)置IURIResolver來設(shè)置圖片存放的目錄) File imageFolderFile = new File(filepath); XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile)); options.setExtractor(new FileImageExtractor(imageFolderFile)); options.URIResolver(new IURIResolver() { public String resolve(String uri) { //http://192.168.30.222:8010//uploadFile/.... return "http://"+IP+":"+PORT+"http://uploadFile/"+strRanString +"/"+ uri; } }); options.setIgnoreStylesIfUnused(false); options.setFragment(true); // 3) 將 XWPFDocument轉(zhuǎn)換成XHTML OutputStream out = new FileOutputStream(new File(filepath + htmlName)); IXWPFConverter<XHTMLOptions> converter = XHTMLConverter.getInstance(); converter.convert(document,out, options); //XHTMLConverter.getInstance().convert(document, out, options); System.out.println("html路徑:"+"http://"+IP+":"+PORT+"http://uploadFile/"+strRanString+htmlName); } catch (Exception e) { e.printStackTrace(); } } else { System.out.println("Enter only MS Office 2007+ files"); } } } /** *功能說明:生成時(shí)間戳 *創(chuàng)建人:zsq *創(chuàng)建時(shí)間:2019年12月7日 下午2:37:09 * */ public static String getRandomNum(){ Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String str=sdf.format(dt); return str; } }
二:Java實(shí)現(xiàn)將Pdf轉(zhuǎn)換為html
1: 引入依賴
<dependency> <groupId>net.sf.cssbox</groupId> <artifactId>pdf2dom</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.12</version> </dependency> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-tools</artifactId> <version>2.0.12</version> </dependency>
2:代碼Demo
public class PdfToHtml { /* pdf轉(zhuǎn)換html */ public void pdfToHtmlTest(String inPdfPath,String outputHtmlPath) { // String outputPath = "C:\\works\\files\\ZSQ保密知識(shí)測(cè)試題庫(kù).html"; //try() 寫在()里面會(huì)自動(dòng)關(guān)閉流 try{ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(outputHtmlPath)),"utf-8")); //加載PDF文檔 //PDDocument document = PDDocument.load(bytes); PDDocument document = PDDocument.load(new File(inPdfPath)); PDFDomTree pdfDomTree = new PDFDomTree(); pdfDomTree.writeText(document,out); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { PdfToHtml ph=new PdfToHtml(); String pdfPath="C:\\works\\files\\武研中心行政考勤制度.pdf"; String outputPath="C:\\works\\files\\武研中心行政考勤制度.html"; ph.pdfToHtmlTest(pdfPath,outputPath); } }
三:Java實(shí)現(xiàn)將TXT轉(zhuǎn)換為html
/* * txt文檔轉(zhuǎn)html filePath:txt原文件路徑 htmlPosition:轉(zhuǎn)化后生成的html路徑 */ public static void txtToHtml(String filePath, String htmlPosition) { try { //String encoding = "GBK"; File file = new File(filePath); if (file.isFile() && file.exists()) { // 判斷文件是否存在 InputStreamReader read = new InputStreamReader(new FileInputStream(file), "GBK"); // 考慮到編碼格式 BufferedReader bufferedReader = new BufferedReader(read); // 寫文件 FileOutputStream fos = new FileOutputStream(new File(htmlPosition)); OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK"); BufferedWriter bw = new BufferedWriter(osw); String lineTxt = null; while ((lineTxt = bufferedReader.readLine()) != null) { bw.write("   "+lineTxt + "</br>"); } bw.close(); osw.close(); fos.close(); read.close(); } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("讀取文件內(nèi)容出錯(cuò)"); e.printStackTrace(); } }
以上就是Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例的詳細(xì)內(nèi)容,更多關(guān)于Java Word/Pdf/TXT轉(zhuǎn)html的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java實(shí)現(xiàn)Html轉(zhuǎn)Pdf的方法
- Java?將PDF轉(zhuǎn)為HTML時(shí)保存到流的方法和步驟
- Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的實(shí)例代碼
- JAVA實(shí)現(xiàn)PDF轉(zhuǎn)HTML文檔的示例代碼
- Java實(shí)現(xiàn)PDF轉(zhuǎn)HTML/Word/Excel/PPT/PNG的示例代碼
- Java實(shí)現(xiàn)word/pdf轉(zhuǎn)html并在線預(yù)覽
- Java中將Html轉(zhuǎn)換為PDF的方法和步驟
- java實(shí)現(xiàn)html轉(zhuǎn)pdf方法步驟
相關(guān)文章
SpringBoot 集成Kaptcha實(shí)現(xiàn)驗(yàn)證碼功能實(shí)例詳解
在一個(gè)web應(yīng)用中驗(yàn)證碼是一個(gè)常見的元素。今天給大家介紹一下kaptcha的和springboot一起使用的簡(jiǎn)單例子。感興趣的朋友參考下吧2017-08-08Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析
這篇文章主要介紹了JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析及簡(jiǎn)單處理方法,文中給大家介紹了javaweb中dbutils的使用,需要的朋友可以參考下2017-12-12SpringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)
下面小編就為大家?guī)硪黄猄pringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05Java正則表達(dá)式實(shí)現(xiàn)在文本中匹配查找換行符的方法【經(jīng)典實(shí)例】
這篇文章主要介紹了Java正則表達(dá)式實(shí)現(xiàn)在文本中匹配查找換行符的方法,結(jié)合具體實(shí)例分析了java正則匹配查找換行符的實(shí)現(xiàn)技巧與匹配模式相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-04-04Spring?Boot詳解五種實(shí)現(xiàn)跨域的方式
跨域指的是瀏覽器不能執(zhí)?其他?站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)javascript施加的安全限制,這篇文章主要介紹了springboot實(shí)現(xiàn)跨域的5種方式,需要的朋友可以參考下2022-06-06Spring中@Configuration注解修改的類生成代理原因解析
大家好,本篇文章主要講的是Spring中@Configuration注解修改的類生成代理原因解析,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02