189 8069 5689

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


文章题目:如何使用java实现在线预览
当前地址:http://cdxtjz.cn/article/ghecoc.html

其他资讯