In my last tutorial, I shared the java code to convert an image to PDF file. In this tutorial I am going to share code for converting MemoryStream image to PDF. I am using Image class of Aspose.PDF for Java library for this task because it offers the capability to convert an image from various sources into PDF format. This may include an image from particular location over the hard-drive, an image from MemoryStream or image placed over some web location. ImageInfo class has a method named setMemoryData() which is used specify MemoryStream as image source. You can use the library you want or you can also try this code by using Aspose Trial version. I hope the code will help you in understanding how to convert MemoryStream image to PDF file.

try {
     //Create pdf document
     Pdf pdf = new Pdf();

     //Add a section into the pdf document
     Section sec1 = pdf.getSections().add();

     byte[] fileArray = null;

     //	Get the Image contents into Byte Array

     try {
            fileArray = getBytesFromFile(new File("d:/pdftest/Aspose.jpg"));
         } catch (IOException e) {

     //Create an image object in the section
     aspose.pdf.Image img1 = new aspose.pdf.Image(sec1);

     //Add image object into the Paragraphs collection of the section
     // Set the Image file type

     // create a BinayFileStream Object to hold byte array
     BinaryFileStream bstream = new BinaryFileStream(fileArray);
     //Set the image object to use BinaySgtream object

     //Save the PDF file"d:/pdftest/Image2PDF.pdf");

}catch( ioe){
	      }catch(Exception e){

    	// Method Returns the contents of file in a byte array

    	private static byte[] getBytesFromFile(File file) throws IOException {

        InputStream is = new FileInputStream(file);

        // Get the size of the file
        long length = file.length();

	 * Ensure that file is not loarger than Integer.MAX_VALUE;

        if (length > Integer.MAX_VALUE) {
            System.out.println("File is too large to process");
            return null;

        // Create the byte array to hold the data
        byte[] bytes = new byte[(int)length];

        // Read in the bytes
        int offset = 0;
        int numRead = 0;
        while ( (offset < bytes.length)
                ( (, offset, bytes.length-offset)) >= 0) ) {

            offset += numRead;


        // Ensure all the bytes have been read in
        if (offset < bytes.length) {
            throw new IOException("Could not completely read file " + file.getName());

        return bytes;