热门标签 | 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的配置。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决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的问题,并提供了解决方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
author-avatar
平凡随缘2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有