This week's book giveaway is in the Design forum.
We're giving away four copies of Building Microservices and have Sam Newman on-line!
See this thread for details.
The moose likes Servlets and the fly likes PDF file read streaming Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Building Microservices this week in the Design forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "PDF file read streaming" Watch "PDF file read streaming" New topic

PDF file read streaming

Rahi Sanj

Joined: Feb 13, 2003
Posts: 11
I am trying to read a pdf file from database. I want the pdf file to be opened streaming in the sense the file should open automatically.

I am getting the bytes properly. I am seeting the response content type, content length properly. I am including part of my code below.
... response.setContentType("application/pdf");
ServletOutputstream out = response.getOutputStream();
out.flush(); ....

When I try to write the bytes using ServletOutputstream I get the window's window option of saving or opening the file. When I select open option, I get message saying "there is an error reading the file.
First I have to save the file to system then open using pdf editor. Then file opens fine. While trying to save file, the default file extension is '.do'. I have to manually save as .pdf file. Is it because I am trying to response out from action?

But, if I read the pdf file from file system rather than from database, the pdf file is read streaming and the file is opened directly and properly.

I dont know what is the problem. Any valuable suggestions please?
Thank You.

Rahi S.
Jeanne Boyarsky
author & internet detective

Joined: May 26, 2003
Posts: 32507

You need to add a header to the request that sets the content disposition to attachment. You can also set the filename here (so it ends in .pdf rather than .do.) For example:

[OCA 8 book] [Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Other Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, TOGAF part 1 and part 2
Rahi Sanj

Joined: Feb 13, 2003
Posts: 11
Thank You for the reply.
Yes, I can now see the filename when I try to save it.

But, actually I wanted to inline or stream the file so that it is displayed in the browser. I changed the content-disposition to inline as,

response.setHeader("Content-Disposition", "inline; filename=testName.pdf");

But still I get the File Download option of saving or opening the file. On the File Download window, I see the "File Name: testName.pdf"(which is correct) but, the "File Type: "is empty. I am setting the contentType as "application/pdf" and also the content length. I doubt that this might be reason why the file is not opened inline or inside browser but not sure.
I dont know what I'm missing. Is there a way that the content type can be checked if it is set correctly. How to open the file inline or inside the browser.

Thank You.
Rahi S.
Ben Souther

Joined: Dec 11, 2004
Posts: 13410

Does your browser have an application registred (acrobat) to handle viewing PDFs?

If so it should be working.

Java API J2EE API Servlet Spec JSP Spec How to ask a question... Simple Servlet Examples jsonf
Rahi Sanj

Joined: Feb 13, 2003
Posts: 11
""Does your browser have an application registred (acrobat) to handle viewing PDFs?""
--- I have pdf reader 7.0 installed in my machine. I didnt understand what you meant by application registered (acrobat).
When I save the file, I can open it and view properly. But, its not opening inline or streaming in the browser.
dont know why?

Thank You.
Rahi S.
I agree. Here's the link:
subject: PDF file read streaming
It's not a secret anymore!