前端页面预览word_jquery.media.js实现前端页面预览

本文介绍了一种使用jquery.media.js实现在前端预览Word文档和PDF文件的方法。通过Java后端处理,将Word转换为HTML并显示,PDF直接以预览模式展示。提供了关键的Java代码段和工具类。
摘要由CSDN通过智能技术生成

预览doc

预览docx

预览pdf

预览pdf

function toView(filePath){

var url = [[@{/converter/preview}]]+'?filePath='+filePath;

$(".modal-body").empty();

$(".modal-body").load(url);

$("#previewModal").modal();

}

function toPdfView(filePath){

var url = [[@{/converter/viewPdf}]]+'?filePath='+filePath;

$(".modal-body").empty();

$(".modal-body").append('预览pdf');

$("a.media").attr("href",[[@{/converter/viewPdf}]]+'?filePath='+filePath);

$("#previewModal").modal();

$("a.media").attr("href",url)

$("a.media").media({width:960,height:800});

}

$("#previewModal").on("hide.bs.modal",function(){

$(this).removeData("bs.modal");

});

java代码

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.BufferedOutputStream;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.imageio.ImageIO;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import com.bjdjjs.utils.converter.WordToHtml;

@Controller

@RequestMapping(value = "/converter")

public class OfficeConterverController {

protected final Logger logger = LoggerFactory.getLogger(OfficeConterverController.class);

@Value("${image.temp.folder}")

private String ImageTempFolder;

@Value("${server.context-path}")

private String contextPath;

@RequestMapping(value = "/preview")

public String preview(HttpServletResponse response,

@RequestParam(value = "filePath", required=true) String filePath){

logger.info("预览文件:"+filePath);

WordToHtml wh = new WordToHtml(ImageTempFolder,contextPath);

ByteArrayOutputStream htmlOutputStream = wh.change(filePath);

try{

BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());

bos.write(htmlOutputStream.toByteArray());

bos.close();

htmlOutputStream.flush();

}catch (Exception e) {

e.printStackTrace();

} finally{

if(htmlOutputStream != null){

try {

htmlOutputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

@RequestMapping(value = "/viewPdf")

public String viewPdf(HttpServletResponse response,

@RequestParam(value = "filePath", required=true) String filePath){

logger.info("预览文件:"+filePath);

response.setContentType("application/pdf");

try{

InputStream pdfInputStream = new FileInputStream(filePath);

BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());

int pdfByte;

while((pdfByte = pdfInputStream.read()) != -1){

bos.write(pdfByte);

}

pdfInputStream.close();

bos.close();

}catch (Exception e) {

e.printStackTrace();

return null;

}

return null;

}

@RequestMapping(value = "/fetchImage")

public String fetchImage(HttpServletResponse response,

@RequestParam(value = "n", required=true) String fileName){

logger.info("获取图片:"+fileName);

try {

BufferedImage image = ImageIO.read(new File(ImageTempFolder+fileName));

ImageIO.write(image, "png", response.getOutputStream());

response.setContentType("image/png");

ImageIO.write(image, "png", response.getOutputStream());

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

@RequestMapping(value = "/test")

public String test(){

logger.info("测试页面");

return "test/preview";

}

}

工具类

package com.bjdjjs.utils.converter;

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.imageio.ImageIO;

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.Picture;

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.xhtml.XHTMLConverter;

import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import org.apache.poi.xwpf.usermodel.XWPFPictureData;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.w3c.dom.Document;

public class WordToHtml {

protected final Logger logger = LoggerFactory.getLogger(WordToHtml.class);

private String ImageTempFolder;

private String contextPath;

//返回图片请求地址

private static String ImageRequestMap = "/converter/fetchImage?n=";

private static String WORD2003 = "doc";

private static String WORD2007 = "docx";

public WordToHtml(String imageTempFolder,String contextPath){

this.ImageTempFolder = imageTempFolder;

this.contextPath = contextPath;

}

public ByteArrayOutputStream change(String filePath) {

int index = filePath.lastIndexOf(".");

String fileType = filePath.substring(index+1, filePath.length());

try {

if(WORD2003.equalsIgnoreCase(fileType))

return convert2Html(filePath);

else if(WORD2007.equalsIgnoreCase(fileType))

return xconvert2Html(filePath);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public ByteArrayOutputStream convert2Html(String filePath)

throws TransformerException, IOException,

ParserConfigurationException {

HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(filePath));//创建一个文档

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 contextPath+ImageRequestMap+suggestedName;

}

} );//对图片的操作

wordToHtmlConverter.processDocument(wordDocument);

//保存图片

List pics=wordDocument.getPicturesTable().getAllPictures();

if(pics!=null){

for(int i=0;i

Picture pic = (Picture)pics.get(i);

System.out.println();

try {

pic.writeImageContent(new FileOutputStream(ImageTempFolder

+ pic.suggestFullFileName()));

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}

Document htmlDocument = wordToHtmlConverter.getDocument();

ByteArrayOutputStream out = new ByteArrayOutputStream();

DOMSource domSource = new DOMSource(htmlDocument);

StreamResult streamResult = new StreamResult(out);

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);

out.close();

return out;

}

public ByteArrayOutputStream xconvert2Html(String filePath)

throws TransformerException, IOException,

ParserConfigurationException {

InputStream inputStream = new FileInputStream(new File(filePath));

XWPFDocument document = new XWPFDocument(inputStream);

XHTMLOptions options = XHTMLOptions.create().indent(1);

File imageFolderFile =new File(ImageTempFolder);

FileImageExtractor extractor = new FileImageExtractor(imageFolderFile);

options.setExtractor(extractor);

options.setIgnoreStylesIfUnused(false);

options.setFragment(true);

options.URIResolver(new BasicURIResolver(contextPath+ImageRequestMap));

ByteArrayOutputStream out = new ByteArrayOutputStream();

XHTMLConverter.getInstance().convert(document, out, options);

out.close();

return out;

}

}

分享到:

2018-01-05 11:08

浏览 4510

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值