jsp怎么获取html,java代码内,获得jsp产生的html

最近做了个事情,是要把数据导出到PDF上,我是通过拿到html,然后调用相关jar工具包导出成PDF的,那html又是jsp产生出来的,然后,就是怎么样在java中拿到jsp装入数据后产生的html了,我的代码如下:

String url = "/jsp/" + tagPx + ".jsp";

WebContext context = WebContextFactory.get();

ServletContext sc = context.getServletContext();

HttpServletResponse response = context.getHttpServletResponse();

HttpServletRequest request = context.getHttpServletRequest();

RequestDispatcher rd = sc.getRequestDispatcher(url);

ByteArrayOutputStream os = new ByteArrayOutputStream();

final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,

Constant.WEB_CHARSET));

HttpServletResponse rep = new HttpServletResponseWrapper(response) {

public PrintWriter getWriter() throws IOException {

return pw;

}

};

request.setAttribute("list", list);

rd.include(request, rep);

pw.flush();

logger.debug("初始JSP输出html:\n" + os.toString(Constant.WEB_CHARSET));

//接下来这段,是转PDF前对html的格式化处理,是我们的工具jar里面成产PDF时对html的要求,和文章题目无关

InputStream is = new ByteArrayInputStream(os.toByteArray());

Tidy tidy = new Tidy();

ByteArrayOutputStream os2 = new ByteArrayOutputStream();

tidy.setXHTML(true); // 设定输出为xhtml(还可以输出为xml)

tidy.setCharEncoding(Configuration.UTF8); // 设定编码以正常转换中文

tidy.setTidyMark(false); // 不设置它会在输出的文件中给加条meta信息

tidy.setXmlPi(true); // 让它加上<?xml version="1.0"?>

tidy.setIndentContent(true); // 缩进,可以省略,只是让格式看起来漂亮一些

tidy.parse(is, os2);

os.flush();

String htmlString = os2.toString(Constant.WEB_CHARSET);

os.close();

pw.close();

is.close();

os2.close();

logger.debug("pdf转换处理后html:\n" + htmlString);

byte[] pdf = pdfManager.htmlToPDF(htmlString, topXleft);

一定注意我代码中红色字部分,在我们项目内,是UTF-8,而且,红色字部分是必须的。之前因为没有红色字部分,差点被折磨死,因为线下开发时正确了,放到线上导出的PDF就是乱码。实在汗颜,这个问题折磨我好几天之后,我才发现了上面红色字部分的解决办法,将问题解决掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值