I have two methods. One that generates a PDF at the server side and another that downloads the PDF at the client side.
How can i do this without storing it in the Server side and allow the client side to directly download this.
The Following are the two methods:
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)) >= 0) {
os.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
fis.close();
os.flush();
os.close();
}
response.setHeader("X-Frame-Options", "SAMEORIGIN");
}
And:
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;
}