title: How can I serve a PDF to a browser without storing a file on the server side?
body: <p>I have two methods. One that generates a PDF at the server side and another that downloads the PDF at the client side.</p>
  
  <p>How can i do this without storing it in the Server side and allow the client side to directly download this.</p>
  
  <p>The Following are the two methods:</p>
  
  <pre><code>public void downloadPDF(HttpServletRequest request, HttpServletResponse response) throws IOException{
  
      response.setContentType("application/pdf");
      response.setHeader("Content-disposition","attachment;filename="+ "testPDF.pdf");
      FileInputStream fis = null;
      DataOutputStream os = null;
  
      try {
          File f = new File("C://New folder//itext3.pdf");
          response.setHeader("Content-Length",String.valueOf(f.length()));
  
          fis = new FileInputStream(f);
          os = new DataOutputStream(response.getOutputStream());
          byte[] buffer = new byte[1024];
          int len = 0;
          while ((len = fis.read(buffer)) &gt;= 0) {
              os.write(buffer, 0, len);
          }
  
      } catch (Exception e) {
          e.printStackTrace();
      } finally {
          fis.close();
          os.flush();
          os.close();
      }
      response.setHeader("X-Frame-Options", "SAMEORIGIN");
  }
  </code></pre>
  
  <p>And: </p>
  
  <pre><code>public Document generatePDF() {
  
      Document doc = new Document();
       try {
              File file = new File("C://New folder//itext_Test2.pdf");
              FileOutputStream pdfFileout = new FileOutputStream(file);
              PdfWriter.getInstance(doc, pdfFileout);
  
              doc.addAuthor("TestABC");
              doc.addTitle("Aircraft Details");
              doc.open();
  
  
              Anchor anchor = new Anchor("Aircraft Report");
              anchor.setName("Aircraft Report");
  
              Chapter catPart = new Chapter(new Paragraph(anchor), 1);
  
              Paragraph para1 = new Paragraph();
              Section subCatPart = catPart.addSection(para1);
              para1.add("This is paragraph 1");
  
              Paragraph para2 = new Paragraph();
              para2.add("This is paragraph 2");
  
  
              doc.add(catPart);
  
              doc.close();
  
  
          } catch (Exception e) {
              e.printStackTrace();
          }
       return doc;
  }
  </code></pre>