Your fat-jar consists of several ImageIO libs. You are simply merging all files
to one big jar and overwriting the config files of those ImageIO libs. Have a
look at the directory "/META-INF/services". The files of the JBig" plugin are
overwritten by files of another plugin. Either you merge those files or don't
create one big jar of all deps.
Andreas
Am 04.05.20 um 16:06 schrieb Fran Rojas:
I am facing a problem when I build an application that uses pdfbox. The
application is able to read books with jbig2 images when I run it from IDE (I
use netbeans 8.1) (I have maven dependencies for jbig2 in pom.xml). The problem
is when I build the application creating a fat jar. When I run the fat jar with
the same input pdf, it gives the following error:
“Cannot read JBIG2 image: jbig2-imageio is not installed”
The threads that comment that error, do not seem to solve my problem (they say
that a maven dependency has to be added to pom, but that dependency is already
on my pom).
I have also checked that jbig2 library classes are inside the fat jar, so I
have no idea of what is happening.
I have isolated the problem in a tinny application that looks like this:
public static void main( String[] args )
{
String fileName = null;
if( args.length == 0 )
{
fileName = "test.pdf";
}
else
{
fileName = args[0];
}
PdfDocumentWrapper doc = null;
try
{
PdfboxFactory factory = new PdfboxFactory();
doc = factory.createPdfDocumentWrapper();
doc.loadPdf( fileName );
for( int ii = 0; ii < doc.getNumberOfPages(); ii++ )
{
int pageNum = ii+1;
System.out.println("\n\nProcessing page: " + pageNum
+"\n---------------------------------");
List<ImageWrapper> imageList =
doc.getImagesOfPage(ii);
int jj=0;
for( ImageWrapper image: imageList )
{
jj++;
System.out.println(String.format(" Page[%d].
Image[%d] -> bounds: %s",
pageNum, jj,
image.getBounds().toString() ) );
}
}
}
catch( Exception ex )
{
ex.printStackTrace();
}
finally
{
if( doc != null )
{
try
{
doc.close();
}
catch( Exception ex )
{
ex.printStackTrace();
}
}
}
}
I have placed the whole isolated example project here (with the purpose to help
to solve the issue): http://www.frojasg1.com/20200504.PdfImageExtractor.zip
When I run that application from IDE, it produces the following output:
Processing page: 1
---------------------------------
Page[1]. Image[1] -> bounds:
java.awt.Rectangle[x=17,y=33,width=442,height=116]
Page[1]. Image[2] -> bounds:
java.awt.Rectangle[x=53,y=513,width=376,height=124]
Page[1]. Image[3] -> bounds:
java.awt.Rectangle[x=101,y=250,width=285,height=5]
------------------------------------------------------------------------
When I run the application from command line, it gives the following output:
$ java -jar ./PdfImageExtractor-v1.0-SNAPSHOT-all.jar
Processing page: 1
---------------------------------
may 04, 2020 3:40:18 PM org.apache.pdfbox.contentstream.PDFStreamEngine
operatorException
GRAVE: Cannot read JBIG2 image: jbig2-imageio is not installed
may 04, 2020 3:40:18 PM org.apache.pdfbox.contentstream.PDFStreamEngine
operatorException
GRAVE: Cannot read JBIG2 image: jbig2-imageio is not installed
may 04, 2020 3:40:18 PM org.apache.pdfbox.contentstream.PDFStreamEngine
operatorException
GRAVE: Cannot read JBIG2 image: jbig2-imageio is not installed
Does anybody know why the fat jar is not able to read jbig2 images?
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org