我有一个GWT应用这就是一个servlet创建与发布请求中给出的数据的PDF文件,然后将responst回:GWT:显示PDF创建为POST响应
public void service(HttpServletRequest request, HttpServletResponse response) {
try {
String text = request.getParameter("text");
if (text == null || text.trim().length() == 0) {
text = "no data";
}
//PDF Creation with iText
Document document = new Document();
ByteArrayOutputStream b = new ByteArrayOutputStream();
PdfWriter.getInstance(document, b);
document.open();
document.add(new Paragraph(text));
document.close();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control",
"must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.setContentLength(b.size());
OutputStream os = response.getOutputStream();
b.writeTo(os);
os.flush();
os.close();
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
我想展示为用户创建PDF。我得到这个远在客户端上:
final RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
GWT.getModuleBaseURL() + "PdfServlet");
rb.setHeader("Content-type", "application/x-www-form-urlencoded");
StringBuffer postData = new StringBuffer();
postData.append(URL.encode("text")).append("=")
.append(URL.encode(Text));
rb.setRequestData(postData.toString());
rb.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request,
Response response) {
if (200 == response.getStatusCode()) {
//What to do here?
} else {
//TODO:Something
}
}
@Override
public void onError(Request request, Throwable exception) {
/TODO:...
}
});
try {
rb.send();
} catch (RequestException e) {
e.printStackTrace();
}
所以我的问题是: 如何显示这个PDF用户? 所有我managaged做的是展现在它“无数据”的PDF ..
谢谢你的帮助:)
您好,感谢您的回答:)我无意中张贴着一些错误代码;)我使用POST方法 - 这样我就可以不使用URL将数据传递到服务器。您是否知道一种将PDF格式的回复邮件作为回复的方式? – Morious 2012-03-24 15:50:56
那么,您可以使用'com.google.gwt.user.client.ui.FormPanel'使用POST方法发布您的请求。您可以使用addSubmitCompleteHandler捕获结果。但是,客户端需要一个字符串结果而不是PDF。您可以保存PDF服务器端并返回一个唯一的ID,然后GWT客户端在常规的GET请求中使用它:someIFrame.setUrl(http://acme.com/servlet?id=12345) – 2012-03-24 16:05:53
Allright ..我会和GET一起去,然后像你之前提到的那样。 :)它的工作方式。 – Morious 2012-03-26 07:54:00