Package com.sun.pdfview.decode

Source Code of com.sun.pdfview.decode.JBig2Decode

package com.sun.pdfview.decode;

import java.io.IOException;
import java.nio.ByteBuffer;

import org.jpedal.jbig2.JBIG2Decoder;
import org.jpedal.jbig2.JBIG2Exception;

import com.sun.pdfview.PDFObject;

/*****************************************************************************
* Decoder for jbig2 images within PDFs.
* Copied from
* https://pdf-renderer.dev.java.net/issues/show_bug.cgi?id=67
*
*  Problem is also described in:
*  http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4799898
* @since 17.11.2010
***************************************************************************
*/
public class JBig2Decode
  protected static ByteBuffer decode(PDFObject dict, ByteBuffer buf,
      PDFObject params) throws IOException {

    byte[] bytes = new byte[buf.remaining()];
    buf.get(bytes, 0, bytes.length);

    return ByteBuffer.wrap(decode(dict, bytes));
  }


  protected static byte[] decode(PDFObject dict, byte[] source) throws IOException {
    JBIG2Decoder decoder;
    decoder = new JBIG2Decoder();
    try {
      byte[] globals = getOptionFieldBytes(dict, "JBIG2Globals");
      if (globals != null) {
        decoder.setGlobalData(globals);
      }
      decoder.decodeJBIG2(source);
    } catch (JBIG2Exception ex) {
      IOException ioException;

      ioException = new IOException();
      ioException.initCause(ex);
      throw ioException;
    }
    return decoder.getPageAsJBIG2Bitmap(0).getData(true);
  }


  public static byte[] getOptionFieldBytes(PDFObject dict, String name) throws IOException {

    PDFObject dictParams =  dict.getDictRef("DecodeParms");

    if (dictParams == null) {
      return null;
    }
    PDFObject value = dictParams.getDictRef(name);
    if (value == null) {
      return null;
    }
    return value.getStream();
  }

}
TOP

Related Classes of com.sun.pdfview.decode.JBig2Decode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.