在跳转到jsp页面的时候,能不能异步把jsp页面转存为word到指定文件下?

在跳转到jsp页面的时候,能不能异步把jsp页面转存为word到指定文件下?我这是一个合同签署
的项目,需要这么一个流程,。。。

没听过jsp装word的,jsp是动态的,只有html转word。你可以先把jsp转html 再转word

是html转,是我说明错了

你百度搜索poi 这个能html转word

package com.ist.util;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.xmlbeans.XmlException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextFont;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTShape;
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide;

public class PptToImgUtil {

/**
 * 将ppt文件转换成图片,因为英文字体格式会乱码所有让英文格式的字体换为宋体
 * @param fileUrl ppt文件路径
 * @param ppt图片文件保存目录
 * @throws Exception
 */
public static void toImg(String fileUrl,String fileOutUrl){
    FileInputStream is;
    try {
        is = new FileInputStream(fileUrl);
        String[] fileUrls =  fileUrl.split("\\\\");
        String fileName = fileUrls[0];
        fileName  = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());

        toImg(is, fileName, fileOutUrl);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public static void toImg(InputStream is,String fileName,String fileOutUrl){

    try {
        SlideShow ppt = new SlideShow(is);
        is.close();
        Dimension pgsize = ppt.getPageSize();
        Slide[] slide = ppt.getSlides();

        for (int i = 0; i < slide.length; i++) {

             TextRun[] truns = slide[i].getTextRuns();      
             for ( int k=0;k<truns.length;k++){      
                RichTextRun[] rtruns = truns[k].getRichTextRuns();      
               for(int l=0;l<rtruns.length;l++){      
                    int index = rtruns[l].getFontIndex();      
                     String name = rtruns[l].getFontName();

                     rtruns[l].setFontIndex(index); 
                     if(isContainsChinese(name)){
                         rtruns[l].setFontName(name);
                     }else{
                         rtruns[l].setFontName("宋体");
                     }
                }      
             }      

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

            Graphics2D graphics = img.createGraphics();

            // clear the drawing area
            graphics.setPaint(Color.white);
            graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

            // render
            slide[i].draw(graphics);

            // save the output
            FileOutputStream out;

                out = new FileOutputStream(fileOutUrl+"/"+fileName + (i + 1) + ".jpg");

            javax.imageio.ImageIO.write(img, "jpg", out);
            out.close();
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
//是否包含中文
public static boolean isContainsChinese(String str)
{
    String regEx = "[\u4e00-\u9fa5]";
    Pattern pat = Pattern.compile(regEx);
    Matcher matcher = pat.matcher(str);
    boolean flg = false;
    if (matcher.find())    {
    flg = true;
    }
    return flg;
}

/**
 * 将pptx格式的文件转换成图片
 * @param fileUrl ppt文件路径
 * @param ppt图片文件保存目录
 * @throws XmlException
 */
public static void toImgPptx(String fileUrl,String fileOutUrl){
    FileInputStream is;

    try {
        is = new FileInputStream(fileUrl);

        String[] fileUrls =  fileUrl.split("\\\\");
        String fileName = fileUrls[0];
        fileName  = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());

        toImgPptx(is, fileName, fileOutUrl);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

public static void toImgPptx(InputStream is,String fileName,String fileOutUrl){
    try {

        XMLSlideShow xmlSlideShow = new XMLSlideShow(is);
        Dimension pgsize = xmlSlideShow.getPageSize();
        XSLFSlide[] slides = xmlSlideShow.getSlides();
        for (int i = 0; i < slides.length; i++) {           
            //设置字体样式,解决中文乱码问题
            CTSlide rawSlide=slides[i].getXmlObject();
            CTGroupShape gs = rawSlide.getCSld().getSpTree();
            CTShape[] shapes = gs.getSpArray();
            for (CTShape shape : shapes) {
                CTTextBody tb = shape.getTxBody();
                if (null == tb)
                    continue;
                CTTextParagraph[] paras = tb.getPArray();

                //宋体样式xml字符串
                CTTextFont font=CTTextFont.Factory.parse(
                        "<xml-fragment xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">"+
                        "<a:rPr lang=\"zh-CN\" altLang=\"en-US\" dirty=\"0\" smtClean=\"0\"> "+
                            "<a:latin typeface=\"+mj-ea\"/> "+
                          "</a:rPr>"+
                        "</xml-fragment>");
                for (CTTextParagraph textParagraph : paras) {
                    CTRegularTextRun[] textRuns = textParagraph.getRArray();
                    for (CTRegularTextRun textRun : textRuns) {
                        CTTextCharacterProperties properties=textRun.getRPr();
                        CTTextFont fontll = properties.getLatin();
                        if(null== fontll){//字体样式为空则设为宋体,否则会乱码
                            properties.setLatin(font);
                        }else{//字体样式不为空则
                            properties.setLatin(fontll);
                        }
                    }
                }
            }

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

            // clear the drawing area
            graphics.setPaint(Color.white);
            graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
            // render
            slides[i].draw(graphics);
            File outFilefolder = new File(fileOutUrl);
            if(!outFilefolder.exists()){
                outFilefolder.mkdirs();
            }
            // save the output
            FileOutputStream out = new FileOutputStream(fileOutUrl+"/"+fileName + (i + 1) + ".jpg");
            javax.imageio.ImageIO.write(img, "jpg", out);
            out.close();
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public static void main(String[] args) {
    try {
        PptToImgUtil.toImg("D:\\素材\\演示ppt.ppt","D:\\素材");
        PptToImgUtil.toImgPptx("D:\\素材\\演示ppt.pptx","D:\\素材");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}