欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例

 更新時(shí)間:2020年11月06日 11:14:46   作者:zsq_fengchen  
這篇文章主要介紹了Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的示例,幫助大家方便的進(jìn)行文件格式轉(zhuǎn)換,完成需求,感興趣的朋友可以了解下

引言:

    最近公司在做一個(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("&nbsp&nbsp&nbsp"+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)文章!

相關(guān)文章

  • SpringBoot 集成Kaptcha實(shí)現(xiàn)驗(yàn)證碼功能實(shí)例詳解

    SpringBoot 集成Kaptcha實(shí)現(xiàn)驗(yàn)證碼功能實(shí)例詳解

    在一個(gè)web應(yīng)用中驗(yàn)證碼是一個(gè)常見的元素。今天給大家介紹一下kaptcha的和springboot一起使用的簡(jiǎn)單例子。感興趣的朋友參考下吧
    2017-08-08
  • Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng)

    Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解Springboot自定義異常處理

    詳解Springboot自定義異常處理

    本篇文章主要介紹了詳解Springboot自定義異常處理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析

    JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析

    這篇文章主要介紹了JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析及簡(jiǎn)單處理方法,文中給大家介紹了javaweb中dbutils的使用,需要的朋友可以參考下
    2017-12-12
  • SpringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)

    SpringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)

    下面小編就為大家?guī)硪黄猄pringMVC的簡(jiǎn)單傳值(實(shí)現(xiàn)代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • Java中靜態(tài)代理的使用與原理詳解

    Java中靜態(tài)代理的使用與原理詳解

    這篇文章主要介紹了Java中靜態(tài)代理的使用與原理詳解,代理模式是為一個(gè)對(duì)象提供一個(gè)替身,以控制對(duì)這個(gè)對(duì)象的訪問,即通過代理對(duì)象訪問目標(biāo)對(duì)象.這樣做的好處是:可以在目標(biāo)對(duì)象實(shí)現(xiàn)的基礎(chǔ)上,增強(qiáng)額外的功能操作,即擴(kuò)展目標(biāo)對(duì)象的功能,需要的朋友可以參考下
    2023-09-09
  • Java正則表達(dá)式實(shí)現(xiàn)在文本中匹配查找換行符的方法【經(jīng)典實(shí)例】

    Java正則表達(dá)式實(shí)現(xiàn)在文本中匹配查找換行符的方法【經(jīng)典實(shí)例】

    這篇文章主要介紹了Java正則表達(dá)式實(shí)現(xiàn)在文本中匹配查找換行符的方法,結(jié)合具體實(shí)例分析了java正則匹配查找換行符的實(shí)現(xiàn)技巧與匹配模式相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • SpringBoot3文件管理操作方法

    SpringBoot3文件管理操作方法

    這篇文章主要介紹了SpringBoot3文件管理,本文案例只圍繞普通文件和Excel兩種類型進(jìn)行代碼實(shí)現(xiàn),包括工程搭建、上傳下載操作,需要的朋友可以參考下
    2023-08-08
  • Spring?Boot詳解五種實(shí)現(xiàn)跨域的方式

    Spring?Boot詳解五種實(shí)現(xiàn)跨域的方式

    跨域指的是瀏覽器不能執(zhí)?其他?站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)javascript施加的安全限制,這篇文章主要介紹了springboot實(shí)現(xiàn)跨域的5種方式,需要的朋友可以參考下
    2022-06-06
  • Spring中@Configuration注解修改的類生成代理原因解析

    Spring中@Configuration注解修改的類生成代理原因解析

    大家好,本篇文章主要講的是Spring中@Configuration注解修改的類生成代理原因解析,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02

最新評(píng)論