you are unlikely to get the pdf back from an RPC in any useful form.

The RPC mechanism is expecting a particular format, and manually  
mucking about with the response object is going to upset that  
expectation. Even if you did manage to get the bytes back via the  
RPC's XHR, what would you plan on doing with them?

basically, what you want to do is either use a form post to supply the  
generation parameters and target a new window where the receiving  
servlet could send the generated PDF, or use a 2 request system where  
you send your RPC with the parameters and cause the PDF to be  
generated, then a second request (new Window using a get request) to  
fetch the generated PDF. The 2 request method allows you to report any  
errors to the user via the Response or by throwing an exception.

-jason


On Apr 6, 2009, at 12:28 PM, Superman859 wrote:

>
> 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 Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to