java实现在线预览

  - -之poi实现word、excel、ppt转html

  简介

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

  如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools、FlexPaper等)才行,实现原理就是:

  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

  RichTextRun[] rtruns = truns[k].getRichTextRuns();

  for(int l=0;l

  int index = rtruns[l].getFontIndex();

  String name = rtruns[l].getFontName();

  rtruns[l].setFontIndex(1);

  rtruns[l].setFontName("宋体");

  // System.out.println(rtruns[l].getText());

  }

  }

  BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

  Graphics2D graphics = img.createGraphics();

  graphics.setPaint(Color.BLUE);

  graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

  slide[i].draw(graphics);

  // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径

  FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

  javax.imageio.ImageIO.write(img, "jpeg", out);

  out.close();

  }

  System.out.println("success!!");

  return true;

  } catch (FileNotFoundException e) {

  System.out.println(e);

  // System.out.println("Can't find the image!");

  } catch (IOException e) {

  }

  return false;

  }

  // function 检查文件是否为PPT

  public static boolean checkFile(File file) {

  boolean isppt = false;

  String filename = file.getName();

  String suffixname = null;

  if (filename != null && filename.indexOf(".") != -1) {

  suffixname = filename.substring(filename.indexOf("."));

  if (suffixname.equals(".ppt")) {

  isppt = true;

  }

  return isppt;

  } else {

  return isppt;

  }

  }

  }

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

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

  要实现在线预览,只需把转换  java实现在线预览

  - -之poi实现word、excel、ppt转html

  ###简介

  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无锡男科医院哪里好 http://www.jzspfk.com/

  其实只是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

  RichTextRun[] rtruns = truns[k].getRichTextRuns();

  for(int l=0;l

  int index = rtruns[l].getFontIndex();

  String name = rtruns[l].getFontName();

  rtruns[l].setFontIndex(1);

  rtruns[l].setFontName("宋体");

  // System.out.println(rtruns[l].getText());

  }

  }

  BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

  Graphics2D graphics = img.createGraphics();

  graphics.setPaint(Color.BLUE);

  graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

  slide[i].draw(graphics);

  // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径

  FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

  javax.imageio.ImageIO.write(img, "jpeg", out);

  out.close();

  }

  System.out.println("success!!");

  return true;

  } catch (FileNotFoundException e) {

  System.out.println(e);

  // System.out.println("Can't find the image!");

  } catch (IOException e) {

  }

  return false;

  }

  // function 检查文件是否为PPT

  public static boolean checkFile(File file) {

  boolean isppt = false;

  String filename = file.getName();

  String suffixname = null;

  if (filename != null && filename.indexOf(".") != -1) {

  suffixname = filename.substring(filename.indexOf("."));

  if (suffixname.equals(".ppt")) {

  isppt = true;

  }

  return isppt;

  } else {

  return isppt;

  }

  }

  }

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

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

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

  java实现在线预览

  - -之poi实现word、excel、ppt转html

  ###简介

  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

  RichTextRun[] rtruns = truns[k].getRichTextRuns();

  for(int l=0;l

  int index = rtruns[l].getFontIndex();

  String name = rtruns[l].getFontName();

  rtruns[l].setFontIndex(1);

  rtruns[l].setFontName("宋体");

  // System.out.println(rtruns[l].getText());

  }

  }

  BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

  Graphics2D graphics = img.createGraphics();

  graphics.setPaint(Color.BLUE);

  graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

  slide[i].draw(graphics);

  // 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径

  FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

  javax.imageio.ImageIO.write(img, "jpeg", out);

  out.close();

  }

  System.out.println("success!!");

  return true;

  } catch (FileNotFoundException e) {

  System.out.println(e);

  // System.out.println("Can't find the image!");

  } catch (IOException e) {

  }

  return false;

  }

  // function 检查文件是否为PPT

  public static boolean checkFile(File file) {

  boolean isppt = false;

  String filename = file.getName();

  String suffixname = null;

  if (filename != null && filename.indexOf(".") != -1) {

  suffixname = filename.substring(filename.indexOf("."));

  if (suffixname.equals(".ppt")) {

  isppt = true;

  }

  return isppt;

  } else {

  return isppt;

  }

  }

  }

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

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

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

java实现在线预览--poi实现word、excel、ppt转html的更多相关文章

  1. apache poi操作office文档----java在线预览txt、word、ppt、execel,pdf代码

    在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputStream bis = null;  URL url = null;  HttpURLConnectio ...

  2. java在线预览txt、word、ppt、execel,pdf代码

    在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputStream bis = null; URL url = null; HttpURLConnection ...

  3. java实现在线预览 - -之poi实现word、excel、ppt转html

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

  4. Java实现在线预览功能

    java实现在线预览功能,需要用到  jacob.dll jacob.jar   预览pdf所需js  pdfobject.min.js 将上传文件转为pdf保存. <div class=&qu ...

  5. Java实现在线预览--openOffice实现

    简介 之前有写了poi实现在线预览的文章,里面也说到了使用openOffice也可以做到,这里就详细介绍一下. 我的实现逻辑有两种: 一.利用jodconverter(基于OpenOffice服务)将 ...

  6. Java实现在线预览–openOffice实现

    实现逻辑有两种: 一.利用jodconverter(基于OpenOffice服务)将文件(.doc..docx..xls..ppt)转化为html格式. 二.利用jodconverter(基于Open ...

  7. 前端实现在线预览pdf、word、xls、ppt等文件

    最近在做一个公司的资源管理系统,一些知识小记一下. 1.前端实现pdf文件在线预览功能 方式一.pdf文件理论上可以在浏览器直接打开预览但是需要打开新页面.在仅仅是预览pdf文件且UI要求不高的情况下 ...

  8. pc或者微信上用pdf.js在线预览pdf和word

    最近项目要求pdf和word可以在线预览功能,pc端还好解决,但是微信端就有点坑了,pc端原来的思路是将文件转成base64,然后用html格式显示 ,但是微信端不支持, 这种方式就pass掉了,谷歌 ...

  9. 在线文档转换API word,excel,ppt等在线文件转pdf、png

    在线文档转换API提供word,excel,ppt等在线文件转pdf.png等,文档:https://www.juhe.cn/docs/api/id/259 接口地址:http://v.juhe.cn ...

随机推荐

  1. Python示例项目学习

    原文地址:http://www.360doc.com/showweb/0/0/874025604.aspx 「 Python3 实现火车票查询工具 」   相信很多人学Python都是冲着它强大的爬虫 ...

  2. Loadrunner11压测过程问题总结

    1.-27727: 下载资源时步骤下载超时 (120 seconds) 已过期 由于压力大了,下载资源所用时间就长了,可以设置加大超时时间: 运行时设置--Internet 协议--首选项--高级-- ...

  3. Android硬编码——音频编码、视频编码及音视频混合

    视频编解码对许多Android程序员来说都是Android中比较难的一个知识点.在Android 4.1以前,Android并没有提供硬编硬解的API,所以之前基本上都是采用FFMpeg来做视频软件编 ...

  4. (原)关于使用zoompad滤镜生成一个转场效果

    之前在 http://bbs.chinaffmpeg.com/forum.php?mod=viewthread&tid=1294&extra=page%3D1 上分享过一个转场效果,今 ...

  5. 自定义MyBatis

    自定义MyBatis是为了深入了解MyBatis的原理 主要的调用是这样的: //1.读取配置文件 InputStream in = Resources.getResourceAsStream(&qu ...

  6. SDKMAN一个基于命令行界面的SDK用户环境管理程序

    1.背景 使用过Python开发的朋友,应该了解到Python2和Python3语法的差异,有时候从网上下载了基于不同解释器的代码,要来回切换版本, 使用起来不是很方便,有时候甚至很麻烦.于是有人发明 ...

  7. dubbo 报错问题记录:may be version or group mismatch

    凌晨时候钉钉告警群里一直大量报错: 接口异常报警:项目:mp-rest,域名:inside-mp.01zhuanche.com,IP:10.30.3.60,接口地址:/api/v3/driverLog ...

  8. JAVA SpringBoot2 整合 ueditor 的 并实现前后端分离

    1,下载 jsp 版本的 百度编辑器,点击此处下载 2,解压文件,解压后目录如下 3,我们将 jsp 目录暂时移动到别的地方,剩下的文件作为一个 H5 前端项目使用,笔者这边导入到 idea 进行开发 ...

  9. 【ARM-Linux开发】ARM嵌入式设备Linux系统启动步骤和方式

    1). 简介 本文简单介绍ARM嵌入式设备基于嵌入式Linux操作系统时候的启动步骤和启动方式, 区别与X86平台,ARM平台下并没有一个标准的启动步骤,不同ARM SoC都会使用各自定义的boot ...

  10. 【windows】win10局域网共享文件夹

    1.打开 2.共享文件夹 另一台局域网电脑可根据共享的电脑ip访问就可以了[格式:\\ip] 如果右键文件夹没有共享选项