千家信息网

如何使用java实现在线预览

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关如何使用java实现在线预览,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下所示:###简介java实现在线预览功能是一个大家
千家信息网最后更新 2025年11月07日如何使用java实现在线预览

这篇文章将为大家详细讲解有关如何使用java实现在线预览,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体内容如下所示:

###简介

java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office、office web 365(http://www.officeweb365.com/)他们都有云在线预览服务,就是要钱0.0

如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools、FlexPaper等)才行,可参考这篇文章http://blog.csdn.net/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转html

package 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 org.apache.commons.io.FileUtils;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.Picture;import org.apache.poi.hwpf.usermodel.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().newDocumentBuilder()   .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 = 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, "人员选择系分.html"), content, "utf-8"); }}

###excel转html

package 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 org.apache.commons.io.FileUtils;import org.apache.poi.hssf.converter.ExcelToHtmlConverter;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hwpf.converter.PicturesManager;import org.apache.poi.hwpf.converter.WordToHtmlConverter;import org.apache.poi.hwpf.usermodel.Picture;import org.apache.poi.hwpf.usermodel.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=new HSSFWorkbook(input); ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter (DocumentBuilderFactory.newInstance().newDocumentBuilder().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 = new ByteArrayOutputStream();   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"); }}

###ppt转html

其实只是ppt转图片,有了图片后放到页面上去,点击下一页就一张张显示就可以了。这里只介绍ppt转图片的过程。

package pptToImg;import java.awt.Dimension;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  import java.io.FileOutputStream;  import java.io.IOException;  import java.awt.Color;  import java.awt.Dimension;  import java.awt.Graphics2D;  import java.awt.geom.Rectangle2D;  import java.awt.image.BufferedImage;  import org.apache.poi.hslf.model.TextRun;  import org.apache.poi.hslf.record.Slide;  import org.apache.poi.hslf.usermodel.RichTextRun;  import org.apache.poi.hslf.usermodel.SlideShow;  public class PPTtoImage {    public static void main(String[] args) {      // 读入PPT文件      File file = new File("D:/poi-test/pptToImg/test.ppt");      doPPTtoImage(file);    }    public static boolean doPPTtoImage(File file) {      boolean isppt = checkFile(file);      if (!isppt) {        System.out.println("The image you specify don't exit!");        return false;      }      try {        FileInputStream is = new FileInputStream(file);        SlideShow ppt = new SlideShow(is);        is.close();        Dimension pgsize = ppt.getPageSize();        org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();        for (int i = 0; i < slide.length; i++) {          System.out.print("第" + i + "页。");          TextRun[] truns = slide[i].getTextRuns();           for ( int k=0;k

ppt转图片有个缺陷,就是ppt里不是宋体的字有些可能会变成框框。

以上都需要引入poi的jar包。

要实现在线预览,只需把转换得到的html在新标签页打开或者镶嵌到某块区域就可以展现了。

关于"如何使用java实现在线预览"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

文件 在线 图片 就是 篇文章 页面 utf-8 人员 内容 宋体 工具 更多 格式 第三方 路径 参考 服务 选择 不错 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发文档背景图纯色 网络安全 不让建群了 公安网网络安全检查简报 朵拉云服务器ip无法修改 西安软件开发合伙人 光遇国际服务和服务器合并了吗 数字标牌播放器软件开发 如皋网络安全提示 采购3个月范围内的资料数据库 武汉市网络安全大赛 怎么打开数据库资源管理器 三众软件开发引擎系统 云服务器内存异常监控 pb怎么设置数据库窗口 网络安全安全浙江大学 邯郸大数据软件开发服务 数字电视有线网络技术 线上购物订单数据库设计 xp磁盘管理器服务器不可用 数据库中必须的三种文件 网络安全教育公益讲座直播 专业做app软件开发多少钱 山东网络安全发展 网络安全技术岗位专业测试题 网络安全系统的成功实施取决于 每个数据库文件都有两个 常州新汉工控机服务器 gis系统设计软件开发 tcp服务器数据被合并 天津软件开发培训多少钱
0