热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Java实现Word/Pdf/TXT转html的示例

这篇文章主要介绍了Java实现WordPdfTXT转html的示例,帮助大家方便的进行文件格式转换,完成需求,感兴趣的朋友可以了解下

引言:

    最近公司在做一个教育培训学习及在线考试的项目,本人主要从事网络课程模块,主要做课程分类,课程,课件的创建及在线学习和统计的功能,因为课件涉及到多种类型,像视频,音频,图文,外部链接及文档类型.其中就涉及到一个问题,就是文档型课件课程在网页上的展示和学习问题,因为要在线统计学习的课程,学习的人员,学习的时长,所以不能像传统做法将文档下载到本地学习,那样就不受系统控制了,所以最终的方案是,在上传文档型课件的时候,将其文件对应的转换成HTML文件,以便在网页上能够浏览学习

 下边主要针对word,pdf和txt文本文件进行转换

一:Java实现将word转换为html

1:引入依赖


 fr.opensagres.xdocreport
 fr.opensagres.xdocreport.document
 1.0.5


 fr.opensagres.xdocreport
 org.apache.poi.xwpf.converter.xhtml
 1.0.5

 
 org.apache.poi
 poi
 3.12


 org.apache.poi
 poi-scratchpad
 3.12

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 转换成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转换成html
  * @throws IOException
  * @throws TransformerException
  * @throws ParserConfigurationException
  */
 public void Word2003ToHtml(String fileName) throws IOException, TransformerException, ParserConfigurationException {

  final String imagepath = STORAGEPATH+"fileImage/";//解析时候如果doc文件中有图片 图片会保存在此路径
  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());
  //设置图片存放的位置
  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 +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+"//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+"//uploadFile/"+strRanString+htmlName);
 }

 /**
  * 2007版本word转换成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对象
     InputStream in = new FileInputStream(f);
     XWPFDocument document = new XWPFDocument(in);

     // 2) 解析 XHTML配置 (这里设置IURIResolver来设置图片存放的目录)
     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+"//uploadFile/"+strRanString +"/"+ uri;
      }
     });

     options.setIgnoreStylesIfUnused(false);
     options.setFragment(true);

     // 3) 将 XWPFDocument转换成XHTML
     OutputStream out = new FileOutputStream(new File(filepath + htmlName));
     IXWPFConverter cOnverter= XHTMLConverter.getInstance();
     converter.convert(document,out, options);
     //XHTMLConverter.getInstance().convert(document, out, options);
     System.out.println("html路径:"+"http://"+IP+":"+PORT+"//uploadFile/"+strRanString+htmlName);
    } catch (Exception e) {
     e.printStackTrace();
    }

   } else {
    System.out.println("Enter only MS Office 2007+ files");
   }
  }
 }

  /**
  *功能说明:生成时间戳
  *创建人:zsq
  *创建时间: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实现将Pdf转换为html

1: 引入依赖


   net.sf.cssbox
   pdf2dom
   1.7
  
  
   org.apache.pdfbox
   pdfbox
   2.0.12
  
  
   org.apache.pdfbox
   pdfbox-tools
   2.0.12
 

2:代码Demo

 public class PdfToHtml {
 
 /*
  pdf转换html
  */
  public void pdfToHtmlTest(String inPdfPath,String outputHtmlPath) {
   // String outputPath = "C:\\works\\files\\ZSQ保密知识测试题库.html";
    //try() 写在()里面会自动关闭流
   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实现将TXT转换为html

/*
  * txt文档转html
  filePath:txt原文件路径
  htmlPosition:转化后生成的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 + "
"); } bw.close(); osw.close(); fos.close(); read.close(); } else { System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } }

以上就是Java实现Word/Pdf/TXT转html的示例的详细内容,更多关于Java Word/Pdf/TXT转html的资料请关注其它相关文章!


推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
author-avatar
雪染苍原牛仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有