flying saucer在java web 中运行到ITextRenderer renderer = new ITextRenderer();时卡死在这一步,不知道为什么,加载的包是core-renderer.jar,iText-2.0.8.jar,xml-apis-xerces-2.9.1.jar
但是就Y的跑不了,跪求大神们帮忙看看是什么原因造成的,感激不尽!!!!急急急急急急急急急!!!
servlet代码如下:
package test;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.xhtmlrenderer.pdf.ITextRenderer;
public class Html2PdfServlet extends HttpServlet {
/**
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
*/
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//pageContext.getServletContext().getRealPath("/")
ServletContext sc = request.getSession().getServletContext();
String path = sc.getRealPath(""); //值为D:\apache-tomcat-6.0.26\webapps\createpdf
System.out.println("原path: " + path);
//把路径中的反斜杠转成正斜杠
path = path.replaceAll("\\\\", "/"); //值为D:/apache-tomcat-6.0.26/webapps/createpdf
System.out.println(path);
String path2 = sc.getRealPath("/");
System.out.println("path2: " + path2);
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println("request.getRequestURI: " + request.getRequestURI());
//获取使用的端口号
System.out.println(request.getLocalPort());
String path3 = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path3+"/";
System.out.println("basepath: " + basePath);
response.setContentType("application/pdf");
//response.setHeader("Content-Disposition", "attachment; filename=WebReport.pdf");
response.setHeader("Content-Disposition", "inline; filename=WebReport.pdf");
StringBuffer html = new StringBuffer();
//组装成符合W3C标准的html文件,否则不能正确解析
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");
html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">")
.append("<head>")
.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />")
.append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>")
.append("<style type=\"text/css\">img {width: 700px;}</style>")
.append("</head>")
.append("<body>");
html.append("<center><h1>统计报表</h1></center>");
html.append("<center>aaaaaaaaaaaaaaaaaa");
//html.append("<img src=\"images/chart.jpg\"/>");
html.append("</center>");
html.append("</body></html>");
// parse our markup into an xml Document
try {
ITextRenderer renderer = new ITextRenderer();
/**
* 引入了新的jar包,不用再导入字体了
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/fonts/simsun.ttc",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
*/
renderer.setDocumentFromString(html.toString());
// 解决图片的相对路径问题
//renderer.getSharedContext().setBaseURL("file:/C:/Documents and Settings/dashan.yin/workspace/createpdf/WebRoot/images");
//renderer.getSharedContext().setBaseURL("file:/D:/apache-tomcat-6.0.26/webapps/createpdf/images");
//renderer.getSharedContext().setBaseURL("file:/" + path + "/images");
renderer.layout();
OutputStream os = response.getOutputStream();
renderer.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
}
jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<a href="/test3/servlet/html2PdfServlet.do">do</a>
</body>
</html>
web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>html2PdfServlet</servlet-name>
<servlet-class>test.Html2PdfServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>html2PdfServlet</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>