Save This Page
Home » iText-2.1.7 » com.lowagie » text » pdf » codec » [javadoc | source]
    1   /*
    2    * $Id: JBIG2Image.java 3715 2009-02-23 15:02:23Z blowagie $
    3    *
    4    * Copyright 2009 by Nigel Kerr.
    5    *
    6    * The contents of this file are subject to the Mozilla Public License Version 1.1
    7    * (the "License"); you may not use this file except in compliance with the License.
    8    * You may obtain a copy of the License at http://www.mozilla.org/MPL/
    9    *
   10    * Software distributed under the License is distributed on an "AS IS" basis,
   11    * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   12    * for the specific language governing rights and limitations under the License.
   13    *
   14    * The Original Code is 'iText, a free JAVA-PDF library'.
   15    *
   16    * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
   17    * the Initial Developer are Copyright (C) 1999-2009 by Bruno Lowagie.
   18    * All Rights Reserved.
   19    * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
   20    * are Copyright (C) 2000-2009 by Paulo Soares. All Rights Reserved.
   21    *
   22    * Contributor(s): all the names of the contributors are added in the source code
   23    * where applicable.
   24    *
   25    * Alternatively, the contents of this file may be used under the terms of the
   26    * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the
   27    * provisions of LGPL are applicable instead of those above.  If you wish to
   28    * allow use of your version of this file only under the terms of the LGPL
   29    * License and not to allow others to use your version of this file under
   30    * the MPL, indicate your decision by deleting the provisions above and
   31    * replace them with the notice and other provisions required by the LGPL.
   32    * If you do not delete the provisions above, a recipient may use your version
   33    * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
   34    *
   35    * This library is free software; you can redistribute it and/or modify it
   36    * under the terms of the MPL as stated above or under the terms of the GNU
   37    * Library General Public License as published by the Free Software Foundation;
   38    * either version 2 of the License, or any later version.
   39    *
   40    * This library is distributed in the hope that it will be useful, but WITHOUT
   41    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   42    * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
   43    * details.
   44    *
   45    * If you didn't download this code from the following link, you should check if
   46    * you aren't using an obsolete version:
   47    * http://www.lowagie.com/iText/
   48    */
   49   
   50   package com.lowagie.text.pdf.codec;
   51   
   52   import com.lowagie.text.ExceptionConverter;
   53   import com.lowagie.text.Image;
   54   import com.lowagie.text.ImgJBIG2;
   55   import com.lowagie.text.pdf.RandomAccessFileOrArray;
   56   
   57   /**
   58    * Support for JBIG2 Images.
   59    * This class assumes that we are always embedding into a pdf.
   60    * 
   61    * @since 2.1.5
   62    */
   63   public class JBIG2Image {
   64   
   65   	/**
   66   	 * Gets a byte array that can be used as a /JBIG2Globals,
   67   	 * or null if not applicable to the given jbig2.
   68   	 * @param	ra	an random access file or array
   69   	 * @return	a byte array
   70   	 */
   71   	public static byte[] getGlobalSegment(RandomAccessFileOrArray ra ) {
   72   		try {
   73   			JBIG2SegmentReader sr = new JBIG2SegmentReader(ra);
   74   			sr.read();
   75   			return sr.getGlobal(true);
   76   		} catch (Exception e) {
   77   	        return null;
   78   	    }
   79   	}
   80   	
   81   	/**
   82   	 * returns an Image representing the given page.
   83   	 * @param ra	the file or array containing the image
   84   	 * @param page	the page number of the image
   85   	 * @return	an Image object
   86   	 */
   87   	public static Image getJbig2Image(RandomAccessFileOrArray ra, int page) {
   88   		if (page < 1)
   89               throw new IllegalArgumentException("The page number must be >= 1.");
   90   		
   91   		try {
   92   			JBIG2SegmentReader sr = new JBIG2SegmentReader(ra);
   93   			sr.read();
   94   			JBIG2SegmentReader.JBIG2Page p = sr.getPage(page);
   95   			Image img = new ImgJBIG2(p.pageBitmapWidth, p.pageBitmapHeight, p.getData(true), sr.getGlobal(true));
   96   			return img;
   97   		} catch (Exception e) {
   98   	        throw new ExceptionConverter(e);
   99   	    }
  100   	}
  101   
  102   	/***
  103   	 * Gets the number of pages in a JBIG2 image.
  104   	 * @param ra	a random acces file array containing a JBIG2 image
  105   	 * @return	the number of pages
  106   	 */
  107   	public static int getNumberOfPages(RandomAccessFileOrArray ra) {
  108   		try {
  109   			JBIG2SegmentReader sr = new JBIG2SegmentReader(ra);
  110   			sr.read();
  111   			return sr.numberOfPages();
  112   		} catch (Exception e) {
  113   	        throw new ExceptionConverter(e);
  114   	    }
  115       }
  116   	
  117   	
  118   }

Save This Page
Home » iText-2.1.7 » com.lowagie » text » pdf » codec » [javadoc | source]