I am reading legacy data "files" from a database stored as BLOBs.  When the
"files" were first loaded, the file type was not captured by the submitter
as an attribute, so I am left with the task of reconstituting these files as
PDF output streams without knowing whether they were originally text files
or PDFs.  The trick is to determine if the BLOB contains a text file or a
PDF file.  Both of these are reconstituted into a PDF in different fashion.

Is there a way to determine what the file type (or mime type) of the input
stream is once I have the java.io.InputStream obtained using
oracle.sql.BLOB.getBinaryStream(1L)?  Or can anyone suggest a better method?

Any assistance would be greatly appreciated.  Thanks.

sample snippet:
-------------------------------------
public byte[] getBlob(oracle.sql.BLOB blob) throws java.sql.SQLException {
  java.io.ByteArrayOutputStream outputStream = new
java.io.ByteArrayOutputStream();
  java.io.InputStream inputstream = null;

  // determine file type??? or catch InvalidPdfException???

  try {
    // IF blob file type is PDF...
    inputstream = blob.getBinaryStream(1L);
    int bytesRead = 0;
    byte[] tmpArray = null;

    while((bytesRead = inputStream.read()) != -1) {
outputStream.write(bytesRead); }

    if(inputStream != null) inputStream.close();
    if(outputSTream != null) outputStream.close();
    tmpArray = outputStream.toByteArray();
  }
  catch(com.itextpdf.text.exceptions.InvalidPdfException e) {
    try {
      //IF blob file type is TEXT...
      java.io.BufferedInputStream bis = null;
      java.io.DataInputStream dis = null;
      com.itextpdf.text.Document document = new
com.itextpdf.text.Document();

      inputstream = blob.getBinaryStream(1L);
      bis = new java.io.BufferedInputStream(inputStream);
      dis = new java.io.DataInputStream(bis);
      com.itextpdf.text.pdf.PdfWriter writer =
com.itextpdf.text.pdf.PdfWriter.getInstance(document, outputStream);
      document.open();
      while(dis,available() != 0) { document.add(new
com.itextpdf.text.Paragraph(dis.readLine())); }

      if(document != null) document.close();
      if(bis != null) bis.close();
      if(dis != null) dis.close();
      tmpArray = outputStream.toByteArray();
    }
    catch(Exception e) { e.printStackTrace(); }
  }
  catch(Exception e) { e.printStackTrace(System.out); }

  return tmpArray;
}
-------------------------------------
end sample snippet:

-- 
View this message in context: 
http://itext-general.2136553.n4.nabble.com/Distinguishing-a-Text-Input-Stream-from-a-PDF-Input-Stream-tp2290278p2290278.html
Sent from the iText - General mailing list archive at Nabble.com.

------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.itextpdf.com/book/
Check the site with examples before you ask questions: 
http://www.1t3xt.info/examples/
You can also search the keywords list: http://1t3xt.info/tutorials/keywords/

Reply via email to