有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java PDFBox IOException:文件结尾,预期行

我目前正在尝试从一个已经上传的PDF中获取文本,并通过使用PDFBox和Selenium的链接进行访问。 我用它作为一个来源:http://www.seleniumeasy.com/selenium-tutorials/how-to-extract-pdf-text-and-verify-using-selenium-webdriver-java

public String function(String pdf_url) {
    PDFTextStripper pdfStripper = null;
    PDDocument pDoc;
    COSDocument cDoc;
    String parsedText = "";
    try {
        URL url = new URL(pdf_url);
        BufferedInputStream file = new BufferedInputStream(url.openStream());
        PDFParser parser = new PDFParser(file);
        parser.parse();
        cDoc = parser.getDocument();
        pdfStripper = new PDFTextStripper();
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(1);

        pDoc = new PDDocument(cDoc);
        parsedText = pdfStripper.getText(pDoc);

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return parsedText;
}

Error: End-of-File expected line
at org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1519)
at org.apache.pdfbox.pdfparser.PDFParser.parseHeader(PDFParser.java:372)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:186)
at scripts.Script.grabPDF_Text(Script.java:94)
at scripts.Script.main(Script.java:817)

为什么我会犯这个错误


共 (2) 个答案

  1. # 1 楼答案

    请检查两个文件的大小是否为0 KB 或 您可以使用try(final PDDocument document=PDDocument.load(file,MemoryUsageSetting.setupTempFileOnly())进行检查{

  2. # 2 楼答案

    下面是您要求使用PDFURL共享的示例

    string PDFURL = "https://www.adobe.com/support/products/enterprise/knowledgecenter/media/c4611_sample_explain.pdf";
    function(PDFURL1);
    
    public String function(String pdf_url)
    {
     //Exact same code as yours
    }
    

    要将PDF用作本地文件,URL和BufferedInputStream需要替换为

     File file = new File(pdf_url);
     PDFParser parser = new PDFParser(new FileInputStream(file));
    

    希望这有帮助