我正在使用iText從PDF文檔中讀取數據。我得到一個ArrayIndexOutOfBoundsException。奇怪的是,它只發生在某些文件和這些文件中的某些位置。我懷疑這與PDF在這些位置進行編碼的方式有關,但無法弄清楚問題所在。使用iText閱讀PDF文檔有時無法工作
我已看過這個問題Read pdf using iText但他似乎已通過更改此文件的位置解決了他的問題。這對我不起作用,因爲我在某些文件的某些位置得到異常 - 所以它不是文件本身,而是引起異常的頁面。
堆棧跟蹤是
異常在線程 「主」 java.lang.ArrayIndexOutOfBoundsException:無效指數:02 在com.lowagie.text.pdf.CMapAwareDocumentFont.decodeSingleCID(未知來源) 在com.lowagie.text.pdf.CMapAwareDocumentFont.decode(Unknown Source) at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.decode(Unknown Source) at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.displayPdfString(未知來源) at com.lowagie.text.pdf.parser.PdfContentStreamProcessor $ ShowText.invoke(Unknown So urce) at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.invokeOperator(Unknown Source) at com.lowagie.text.pdf.parser.PdfContentStreamProcessor.processContent(Unknown Source) at com.lowagie.text.pdf。 parser.PdfTextExtractor.getTextFromPage(未知來源) 在com.pdfextractor.main.Extractor.main(Extractor.java:61)
而線61對應於該行:
含量= extractor.getTextFromPage (頁);
所以看起來非常明顯,getTextFromPage()方法不起作用。
public static void main(String[] args) throws IOException{
ArrayList<String> keywords = new ArrayList<String>();
keywords.add("location");
keywords.add("Mass Spectrometry");
keywords.add("vacuole");
keywords.add("cytosol");
String directory = "C:/Ankur/Projects/PEB/Extractor/papers/";
File directoryToRead = new File(directory);
String[] sa_filesToRead = directoryToRead.list();
List<String> filesToRead = Arrays.asList(sa_filesToRead);
Iterator<String> fileItr = filesToRead.iterator();
while(fileItr.hasNext()){
String nextFile = fileItr.next();
PdfReader reader = new PdfReader(directory+nextFile);
int noPages = reader.getNumberOfPages();
PdfTextExtractor extractor = new PdfTextExtractor(reader);
String content="";
for(int page=1;page<=noPages;page++){
int index = 1;
System.out.println(page);
content = extractor.getTextFromPage(page);
}
}
}
相關:http://stackoverflow.com/questions/1753752/arrayindexoutofboundsexception-not-being-caught-and_ignored – 2009-11-18 07:29:49