Your input stream and output stream cannot be from the same blob. Just
like you cannot use the same file. As you could end up overwriting
what you are reading.
Try creating a temporary blob for writing (use BLOB.createTemporary
method) and save this back to the database.
On Mon, Sep 15, 2008 at 3:34 PM, Ed M <[EMAIL PROTECTED]> wrote:
>
> I have PDF documents stored in an Oracle database as a BLOB which I need to
> generate a new consolidated PDF from and store as new record in Oracle
> Database as a new Blob. I have searched the forums for a similar situation
> and I have the iText book, but I find that I still could use some assistance
> and/or direction.
>
> I am new to iText, Blobs, and Input/Output Stream programming so please
> excuse my ignorance if my code contains errors. One unique requirement is
> that I do NOT generate physical files on the server. Currently, I generate
> an iText Document for the "output" stream using a PdfWriter without error.
> When I attempt to open (read) a stored PDF (Blob) from the database using an
> Input Stream, I encounter an IO Exception that the "PDF header signature not
> found" constructing the PdfReader. Essentially, I want to read multiple PDF
> documents stored as Blobs and append them to a new PDF document and then
> store it as a Blob without generating any physical files on the server.
> Here is the Reader's Digest version of my Java source code.
>
>
> ...
> Document finalDocument = new Document(PageSize.A5, 36, 36, 108, 108);
>
> ... // query database to populate OracleResultSet with contents of BLOB
> column
> OracleResultSet blobDetails = (OracleResultSet) stmt.executeQuery("Select
> BLOB_CONTENT from table");
> if(blobDetails.next()){
> InputStream input = blobDetails.getBLOB(1).getBinaryStream();
> long mylong = blobDetails.getBLOB(1).length();
> OutputStream fos = blobDetails.getBLOB(1).setBinaryStream(mylong);
> PdfWriter writer = PdfWriter.getInstance(finalDocument, fos); // <-- this
> is where the error is thrown
> finalDocument.open();
>
> // get input stream for file to append
> blobDetails.next();
> InputStream inputAppend = blobDetails.getBLOB(1).getBinaryStream();
> PdfReader otherPDF = new PdfReader(inputAppend);
> // add page by page
> for(int x=1; x<=reader.getNumberOfPages(); x++){
> PdfImportedPage page = writer.getImportedPage(reader,x);
> Image image = Image.getInstance(page);
> finalDocument.add(image);
> }
>
> // save document back to database
> if(finalDocument.isOpen()){
> try{
> byte[] data = new byte[writer.getCurrentDocumentSize()];
> Statement stmt = (OraclePreparedStatement)
> conn.prepareStatement("Insert into upload_table(BLOB_CONTENT) values (?)");
> stmt.setObject(1,data);
> stmt.executeUpdate();
> }catch(Exception e){e.printStackTrace();}
> }
>
> // close document
> finalDocument.close();
> --
> View this message in context:
> http://www.nabble.com/Editing-PDF-Stored-as-a-BLOB-without-Re-Constituting-File-tp19498541p19498541.html
> Sent from the iText - General mailing list archive at Nabble.com.
>
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> iText-questions mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/itext-questions
>
> Buy the iText book: http://www.1t3xt.com/docs/book.php
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://www.1t3xt.com/docs/book.php