2013-09-25 86 views
1

我用PDFbox解析那個pdf document.It引發異常,說它找不到標題版本信息。任何想法?pdfbox標題版本信息錯誤

我認爲版本是1.3我看到它時,我把每個字節char。 鏈路方法和輸出的http://www.selab.isti.cnr.it/ws-mate/example.pdf

這裏代碼:

public String PDFtest(String textLink) throws IOException{ 
     PDFParser parser; 
     String parsedText = null; 
     PDFTextStripper pdfStripper; 
     PDDocument pdDoc; 
     COSDocument cosDoc; 
     PDDocumentInformation pdDocInfo; 


    StringBuilder sd=new StringBuilder(); 
    URL link; 
    try { 
     link = new URL(textLink); 
     URLConnection urlConn = link.openConnection(); 
     BufferedInputStream in = null; 
     in = new BufferedInputStream(urlConn.getInputStream()); 
     byte data[] = new byte[1024]; 
     in.read(data, 0, 1024); 

    parser = new PDFParser(in); 
    parser.parse(); 
    cosDoc = parser.getDocument(); 
    pdfStripper = new PDFTextStripper(); 
    pdDoc = new PDDocument(cosDoc); 
    parsedText = pdfStripper.getText(pdDoc); 
    } catch (MalformedURLException ex) { 
     Logger.getLogger(HTMLhelper.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    catch (NumberFormatException e){ 
     System.out.println("hata"); 
    } 

    return parsedText; 



} 

例外:

Exception in thread "main" java.io.IOException: Error: Header doesn't contain versioninfo 
    at org.apache.pdfbox.pdfparser.PDFParser.parseHeader(PDFParser.java:317) 
    at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:173) 
    at ParsingMachine.HTMLhelper.PDFtest(HTMLhelper.java:99) 
    at ParsingMachine.tester.main(tester.java:18) 
Java Result: 1 

回答

0

您第一讀數據的前導千字節到字節數組:

in.read(data, 0, 1024); 

,然後你期望PDFBox與剩餘的字節相處

parser = new PDFParser(in); 
parser.parse(); 

很可能實際的PDF標題包含在您從PDFBox解析器保留的那些前導字節中。

因此,只需讓PDFBox讀取所有數據即可。

+0

我用in.available更改了所有的1024個數據,但錯誤再次出現。每次運行程序時字節數組的大小都會改變 – user2638084

+1

爲什麼在允許之前從'in'中讀取任何數據PDFBox解析流?根本不要! – mkl

1

您必須合併非pdf格式的文件。請仔細檢查您的列表中是否有任何文件。