pdfbox标题版本信息错误

use*_*084 3 java pdf parsing pdfbox

我使用PDFbox解析该pdf文档.它抛出异常,说它无法找到标题版本信息.任何的想法?

我认为版本是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;



}
Run Code Online (Sandbox Code Playgroud)

例外:

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
Run Code Online (Sandbox Code Playgroud)

小智 7

您必须合并不是pdf格式的文件.请仔细检查列表中是否有任何文件,然后是pdf.


mkl*_*mkl 0

首先将前导千字节数据读入字节数组:

in.read(data, 0, 1024);
Run Code Online (Sandbox Code Playgroud)

然后你期望 PDFBox 能够处理剩余的字节

parser = new PDFParser(in);
parser.parse();
Run Code Online (Sandbox Code Playgroud)

实际的 PDF 标头很可能包含在您从 PDFBox 解析器保留的那些前导字节中。

因此,只需允许 PDFBox 读取所有数据即可。

  • 为什么在允许 PDFBox 解析流之前要从“in”读取任何数据?根本就不要! (2认同)