I want to use iText to generate a PDF file. Ideally, I can
incorporate a generatePDF() method into my interface and my Servlet
that is involved in GWT-RPC. When that method is called, I want it to
generate a PDF file and either display it to the user in a new window
or present a save dialog box or anything - something that leaves the
GWT app as it was and allows the user to view / save / print the PDF.
Generating the PDF is not a problem. I can generate one and write it
to a file on the server without any trouble. However, I am having
trouble presenting the user with it (I would rather NOT write them to
files on the server, and just let the user save on their own machine
if they wish to do so).
Here is code for a sample "Hello World"
public boolean generatePDF(ReportDO report, int id) {
System.out.println("hello world to follow");
// get request
//HttpServletRequest request = getThreadLocalRequest();
// get response
HttpServletResponse response = getThreadLocalResponse();
Document document = new Document();
// generate test PDF
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//PdfWriter.getInstance(document, new FileOutputStream
("HelloWorld.pdf"));
PdfWriter.getInstance(document, baos);
document.open();
document.add(new Paragraph("hello world"));
document.close();
// setting some response headers
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate,
post-check=0,
pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
// content length is needed for MSIE
response.setContentLength(baos.size());
// write ByteArrayOutputStream to ServletOutputStream
ServletOutputStream out = response.getOutputStream();
baos.writeTo(out);
out.flush();
}
catch (Exception e) {
System.out.println("generatePDF:Exception " +
e.getMessage());
}
return true;
}
This code is in my GWT-RPC Servlet, which extends
RemoteServiceServlet. Note if I use the currently commented line of
FileOutputStream("HelloWorld.pdf") it will generate the file and work
fine. However, if I try to send it to the browser, nothing appears,
and the AsyncCallback for GWT-RPC calls the onFailure() method.
Does anyone know where the problem might be? I'm assuming it has to
do with response. RemoteServiceServlet has a method
getThreadLocalResponse() which returns HttpServletResponse, which is
what the iText examples use. I know very little about these response
objects. But it seems that somehow there is some interference between
that and GWT-RPC. The AsyncCallback is a success when writing to
file. However, when attempting to send to browser, it fails.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---