import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class RenderPDF extends HttpServlet
{
    public void doPost( HttpServletRequest req, HttpServletResponse res )
            throws ServletException, IOException
    {
        doGet( req, res );
    }                                    

    public void doGet( HttpServletRequest req, HttpServletResponse res )
            throws ServletException, IOException
    {
        ServletOutputStream out   = res.getOutputStream( );
        BufferedInputStream bin   = null; 
        BufferedOutputStream bout = null;
        String               file = req.getParameter( "file" );

        try
        {
            URL url = new URL( "http://localhost:8080/" + file + ".pdf" );

            // Use Buffered Stream for reading/writing.
            bin =  new BufferedInputStream( url.openStream( ) );
            bout = new BufferedOutputStream( out );

            byte[ ] buff = new byte[ 2048 ];
            int bytesRead;

            res.setContentType( "application/pdf" );
            res.setHeader( "Content-disposition",
                            "attachment; filename=" + file + ".pdf" );
                            
            // Copy, using bulk operations
            while( (bytesRead = bin.read( buff, 0, buff.length ) ) != -1 )
                bout.write( buff, 0, bytesRead );
        }
        catch( IOException e )
        {
            res.setContentType( "text/html" );
            PrintWriter pw = new PrintWriter( out, true );
            pw.println( "<HTML><BODY><PRE>" );
            e.printStackTrace( pw );
            pw.println( "</PRE></BODY></HTML>" );
        }
        finally
        {
            if( bin != null )
                bin.close( );
            if( out != null )
                out.close( );
        }
    }
}
