I am trying to use JBIG2ImageReader to parse JBIG2 data from a PDF (the image stream and globals are being provided - we are not using PdfBox to parse the PDF itself). Please let me know if I should be using a different communication avenue for JBIG2 specific questions.
Here's what I'm trying to do: JBIG2ImageReader jbig2Reader = new JBIG2ImageReader(new JBIG2ImageReaderSpi()); byte[] globalBytes = //raw bytes from PDF DECODEPARAMS, JBIG2GLOBALS ImageInputStream globalsInputStream = new DefaultInputStreamFactory().getInputStream(new ByteArrayInputStream(globalBytes)); JBIG2Globals globals = jbig2Reader.processGlobals(globalsInputStream); jbig2Reader.setGlobals(globals); byte[] imageBytes = // raw JBIG2 image stream bytes from PDF ImageInputStream imageInputStream = new DefaultInputStreamFactory().getInputStream(new ByteArrayInputStream(image.getImageAsBytes())); jbig2Reader.setInput(imageInputStream); return jbig2Reader.read(0); When I do this, I get a null pointer exception: Exception in thread "main" java.lang.RuntimeException: Can't instantiate segment classException in thread "main" java.lang.RuntimeException: Can't instantiate segment class at org.apache.pdfbox.jbig2.SegmentHeader.getSegmentData(SegmentHeader.java:420) at org.apache.pdfbox.jbig2.JBIG2Page.createNormalPage(JBIG2Page.java:202) at org.apache.pdfbox.jbig2.JBIG2Page.createPage(JBIG2Page.java:168) at org.apache.pdfbox.jbig2.JBIG2Page.composePageBitmap(JBIG2Page.java:157) at org.apache.pdfbox.jbig2.JBIG2Page.getBitmap(JBIG2Page.java:133) at org.apache.pdfbox.jbig2.JBIG2ImageReader.read(JBIG2ImageReader.java:249) at javax.imageio.ImageReader.read(ImageReader.java:939) .... Caused by: java.lang.NullPointerException at org.apache.pdfbox.jbig2.segments.TextRegion.initSymbols(TextRegion.java:1010) at org.apache.pdfbox.jbig2.segments.TextRegion.getSymbols(TextRegion.java:273) at org.apache.pdfbox.jbig2.segments.TextRegion.parseHeader(TextRegion.java:154) at org.apache.pdfbox.jbig2.segments.TextRegion.init(TextRegion.java:1128) at org.apache.pdfbox.jbig2.SegmentHeader.getSegmentData(SegmentHeader.java:413) ... 19 more The SegmentHeader array in TextRegion looks like this: (org.apache.pdfbox.jbig2.SegmentHeader[]) [null, #SegmentNr: 377 SegmentType: 0 PageAssociation: 1 Referred-to segments: none ] Note that the first element is null. I'm not sure why this is (maybe it's not a valid JBIG2 data stream??). This file opens and displays fine in PDF viewers, so I'm assuming it must be something that I'm doing wrong. Any pointers? - K Kevin Day *trumpet**p| *480.961.6003 x1002 *e| *ke...@trumpetinc.com *www.trumpetinc.com <http://trumpetinc.com/>* LinkedIn <https://www.linkedin.com/company/trumpet-inc.>| Trumpet Blog <http://trumpetinc.com/blog/>| Twitter <https://twitter.com/trumpetinc>