ExceptionConverter com.itextpdf.text.pdf.parser.InlineImageUtils $ InlineImageParseException:找不到图像数据或EI 420

时间:2015-05-29 17:51:16

标签: java pdf itextsharp itext

我正在使用iText从PDF中提取文本,但是,我有以下异常,并且它无法通过try / catch(Exception e)捕获,我已将文件附加到此处,实际上我并不关心我是否可以从中提取文本,我只想知道如何捕获异常。

例外:

ExceptionConverter: com.itextpdf.text.pdf.parser.InlineImageUtils$InlineImageParseException: Could not find image data or EI
420
    at com.itextpdf.text.pdf.parser.InlineImageUtils.parseInlineImageSamples(InlineImageUtils.java:386)
    at com.itextpdf.text.pdf.parser.InlineImageUtils.parseInlineImage(InlineImageUtils.java:156)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.processContent(PdfContentStreamProcessor.java:427)
    at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:80)
    at com.itextpdf.text.pdf.parser.PdfTextExtractor.getTextFromPage(PdfTextExtractor.java:74) 

档案:https://www.dropbox.com/s/4l4ioqzpcca05vc/Understanding%20the%20High%20Photocatalytic%20Activity%20of%20%28B%2C%20Ag%29-Codopeda312205c_si_001.pdf?dl=0

1 个答案:

答案 0 :(得分:1)

有问题的内联图片是

q 12 0 0 1.5 598.5 2905.5 cm
BI
/CS/RGB
/W 8
/H 1
/BPC 8
/F[/A85
/Fl]
/DP[null
<</Predictor 15
/Columns 8
/Colors 3>>]
ID
Gar9F/1Xl3A2+09nF?)T!(_,53r~>
EI Q 
第5页的

。遗憾的是,null被解析为PdfLiteral,其值为“null”,而不是PdfNull个实例。因此,PdfReader.decodeBytes()会在

中引发异常
PdfObject dpEntry = getPdfObject(dp.get(j));
if (dpEntry instanceof PdfDictionary){
    decodeParams = (PdfDictionary)dpEntry;
} else if (dpEntry == null || dpEntry instanceof PdfNull) {
    decodeParams = null;
} else {
    throw new UnsupportedPdfException(MessageLocalization.getComposedMessage("the.decode.parameter.type.1.is.not.supported", dpEntry.getClass().toString()));
}

更换

} else if (dpEntry == null || dpEntry instanceof PdfNull) {

通过

} else if (dpEntry == null || dpEntry instanceof PdfNull || (dpEntry instanceof PdfLiteral && Arrays.equals("null".getBytes(), ((PdfLiteral)dpEntry).getBytes()))) {

使代码适用于OP的PDF。