我正在使用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)
答案 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。