多语言展示
当前在线:576今日阅读:168今日分享:49

Cannot read JBIG2 image

org.apache.pdfbox.filter.MissingImageReaderException: Cannot read JBIG2 image: jbig2-imageio is not installed.原因有2:1.是用renderImageWithDPI函数,但未引入pdfbox的插件jar包levigo-jbig2-imageio。2.在引入了levigo-jbig2-imageio包后,还是提示,有可能是你的jdk版本过低,可添加ImageIO.scanForPlugins();解决。
方法/步骤
2

经分析测试,在jdk1.6版本下,应将levigo-jbig2-imageio降为1.6.5版本,且在调用PDFRenderer renderer = new PDFRenderer(document);添加代码:            ImageIO.scanForPlugins();

3

                    org.apache.pdfbox            pdfbox            2.0.7                                    org.apache.pdfbox            pdfbox-tools            2.0.7                                            com.levigo.jbig2            levigo-jbig2-imageio            1.6.5                            org.bouncycastle            bcprov-jdk15on            1.54                            org.bouncycastle            bcmail-jdk15on            1.54                            org.bouncycastle            bcpkix-jdk15on            1.54        

4

PDDocument document = null;                boolean failed = false;                File file = new File(pdfPath);                System.out.println('Opening: ' + file.getName());                try                {                    new FileOutputStream(new File(path, file.getName() + '.parseerror')).close();                                        document = PDDocument.load(file, (String)null);                    String outputPrefix = path + '/' + file.getName() + '-';                    int numPages = document.getNumberOfPages();                    if (numPages < 1)                    {                        failed = true;                        System.out.println('file ' + file.getName() + ' has < 1 page');                    }                    else                    {                        new File(path, file.getName() + '.parseerror').delete();                    }                    ImageIO.scanForPlugins();                     PDFRenderer renderer = new PDFRenderer(document);                    for (int i = 0; i < numPages; i++)                    {                        Map map = new HashMap();                        String fileName = outputPrefix + (i + 1) + '.png';                        BufferedImage image = renderer.renderImageWithDPI(i, 96); // Windows native DPI                        ImageIO.write(image, 'PNG', new File(fileName));            }

推荐信息