Here is the code to handle the request/response of PDF creation with Flex / AlivePDF in Tapestry 5.
Simply make this page class. There is no TML file required.
package com.companyname.project.etc;
import java.io.IOException;
import javax.servlet.*;
import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.util.TextStreamResponse;
import org.apache.tapestry.services.RequestGlobals;
public class WritePDF {
@Inject
private RequestGlobals request;
@Inject
private RequestGlobals response;
Object onActivate() throws IOException {
int i = 0;
int k = 0;
int maxLength = request.getHTTPServletRequest().getContentLength();
byte[] bytes = new byte[maxLength];
String method = request.getHTTPServletRequest().getParameter("method");
String name = request.getHTTPServletRequest().getParameter("name");
ServletInputStream si = null;
try {
si = request.getHTTPServletRequest().getInputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while (true) {
k = si.read(bytes,i,maxLength);
i += k;
if (k <= 0)
break;
}
if (bytes != null) {
ServletOutputStream stream = response.getHTTPServletResponse().getOutputStream();
response.getHTTPServletResponse().setContentType("application/pdf");
response.getHTTPServletResponse().setContentLength(bytes.length);
response.getHTTPServletResponse().setHeader("Content-Disposition",method + ";filename=" + name);
stream.write(bytes);
stream.flush();
stream.close();
return response;
} else {
return new TextStreamResponse("text/plain", String.format("bytes is null"));
}
}
}