Skip to Main Content

Java Development Tools

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Getting error while opening pdf on server

kanikaFeb 12 2013 — edited Feb 13 2013
Dear All,

I am working on jdeveloper 11.1.1.4.0.
I have a use case where on click of link , generating a dynamic pdf. The pdf i am arranging with the help of itext through backing bean. It is generating as well downloading the pdf.I have used filedownloadlistner to call the generate and download pdf methods.
On integrated weblogic server the pdf is working fine, but when i deploy on server while opening pdf getting error :

*"Adobe Reader could not open 'test.pdf' beacause it is either not a supported file type*
*or because the file has been damaged (for example, it was sent as an email attachment and*

*wasn't correctly decoded)."*

I am not able to get the root cause for the problem. The sample code to generate and download pdf is :

// Generate PDF
private void generatePDFFile(FacesContext facesContext,
java.io.OutputStream outputStream) {
try {
System.out.println("In Generate PDF................");
Document document = new Document(PageSize.A4);
PdfWriter.getInstance(document, new FileOutputStream(FILE));
document.open();
addMetaData(document);
addTitlePage(document);
document.close();
System.out.println("End of PDF......................");
facesContext = facesContext.getCurrentInstance();
ServletContext context = (ServletContext)facesContext.getExternalContext().getContext();

System.out.println(context.getRealPath("/"));
String FILE = "test.pdf";
File file = new File(FILE);

FileInputStream fdownload;
//BufferedInputStream bis;
byte[] b;
System.out.println(file.getCanonicalPath());
System.out.println(file.getAbsolutePath());
fdownload = new FileInputStream(file);

int n;
while ((n = fdownload.available()) > 0) {

b = new byte[n];

int result = fdownload.read(b);

outputStream.write(b, 0, b.length);

if (result == -1)
break;
}
outputStream.flush();

} catch (Exception e) {

e.printStackTrace();

}


Download PDF

private void downloadPDF(FacesContext facesContext, java.io.OutputStream outputStream) {
try {
facesContext = facesContext.getCurrentInstance();
ServletContext context = (ServletContext)facesContext.getExternalContext().getContext();
ExternalContext ctx = facesContext.getExternalContext();
HttpServletResponse res = (HttpServletResponse)ctx.getResponse();
res.setContentType("application/pdf");
outputStream = res.getOutputStream();

System.out.println(context.getRealPath("/"));
File file = new File(FILE); // FILE = 'test.pdf'
FileInputStream fdownload;
// BufferedInputStream bis;
byte[] b;
fdownload = new FileInputStream(file);
//bis = new BufferedInputStream (new FileInputStream(file));
int n;

while ((n = fdownload.available()) > 0) {
b = new byte[n];
int result = fdownload.read(b);
//outputStream.write(b, 0, b.length);
outputStream.write(b, 0, b.length);
if (result == -1)
break;
}
outputStream.flush();
outputStream.close();
fdownload.close();
} catch (Exception e) {
e.printStackTrace();
}
}


}

Any help will be appreciated.

Thanks
Kanika
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 13 2013
Added on Feb 12 2013
6 comments
2,210 views