If I understand correctly you are looking to create a PDF file, is there any reason you cannot write directly out to a PDF via FileOutputStream? If you need to read the contents on the PDF and do some sort of manipulation on it you would probably be better served using a PipedOutputStream.
Joined: Dec 13, 2005
Thanks for the response Don.
The reason I was not using FileOutputStream is because if I understand right, I have to give a file name in that case. Since this is an online application, I dont want to create files in the server. I just want to receive it as bytes and pass it to the calling application.
Please let me know if there is a way I can do this without explicitly using a file name..
Joined: Jan 09, 2006
In that case you will want to use the PipedOutputStream linked to a PipedInputStream. Once you pass the PipedOutputStream instance into the method which takes the OutputStream as an argument, assuming the getPdfFile(String, OutputStream) method is constructed such that it uses a separate Thread to write to the OutputStream, you can then return the PipedInputStream and the user of your method can read from the returned InputStream just as they would any other. If on the other hand the getPdfFile method doesn't write from a separate thread, then you will have to wrap the call to that method in a separate thread created by you, at which point you would have to do a little more exception handling and thread cleanup. Examples of such can be found along with the PipedIn/OutputStream examples through Google.
Jay Ram wrote:Since this is an online application, I dont want to create files in the server. I just want to receive it as bytes and pass it to the calling application.
Please let me know if there is a way I can do this without explicitly using a file name...
At least two ways. You could write it to a ByteArrayOutputStream, then get the bytes from that. Or quite possibly, if your goal is to send the PDF as the response to an HTTP request, you could just write it directly to the request's output stream. In the latter case you wouldn't have the intermediate step of creating an array of bytes.