Исключение ввода-вывода PDFBox: Ошибка: конец файла, ожидаемая строка

#java #selenium #pdfbox

#java #селен #pdfbox

Вопрос:

Я пытаюсь проверить определенный текст из PDF-файла, который был загружен на страницу с помощью PDFBox и Selenium, но я получаю сообщение об ошибке ниже. Я ссылался на это [[https://www.lambdatest.com/blog/selenium-testing-pdf-files/#:~:text=To handle a PDF document in Selenium test automation, we,the documents, and so on.]][1]

  1. Способ проверки содержимого PDF-файла
 public void validate_view_of_pdf() {
        logger.info("View PDF method>>");
        
        
        String message = String.format("Close");
        logger.info("alert"   message);
        Assert.assertTrue(commonPage.clickOnMessagePrompt("span",message));     
        formsPage.clickViewExportPDFButton();       
        String url = driver.getCurrentUrl();
        logger.info("url >>"   url);
        
        try {
            
            String pdfContent = formsPage.readPdfContent(url);
            logger.info("pdfContent >>"   pdfContent);
            
            Assert.assertTrue(pdfContent.contains("Performance Appraisal - Manager"));
            
        
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
  1. читать содержимое PDF
 public String readPdfContent(String url) throws IOException {
        
        URL pdfUrl = new URL(url);
        InputStream in = pdfUrl.openStream();
        BufferedInputStream bf = new BufferedInputStream(in);
        PDDocument doc = PDDocument.load(bf);
        int numberOfPages = getPageCount(doc);
        logger.info("The total number of pages " numberOfPages);
        String content = new PDFTextStripper().getText(doc);
        doc.close();
    
    return content;
        
    }
    
    public int getPageCount(PDDocument doc) {
        //get the total number of pages in the pdf document
        int pageCount = doc.getNumberOfPages();
        return pageCount;
        
    }
 
 java.io.IOException: Error: End-of-File, expected line
    at org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1103)
    at org.apache.pdfbox.pdfparser.COSParser.parseHeader(COSParser.java:2589)
    at org.apache.pdfbox.pdfparser.COSParser.parsePDFHeader(COSParser.java:2560)
    at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:219)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1222)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1122)
    at phr.pageobjects.FormsPage.readPdfContent(FormsPage.java:516)
    at phr.stepdefinitions.FormsStepDef.validate_view_of_pdf(FormsStepDef.java:464)
 

Комментарии:

1. Пожалуйста, отредактируйте свой вопрос и добавьте полную трассировку стека исключения.

2. пожалуйста, дайте мне знать, имеет ли URL-адрес, не имеющий расширения .pdf, какое-либо отношение к ошибке.

3. Вы пытались скопировать BufferedInputStream bf в файл вместо того, чтобы передавать его в PDFBox? Не могли бы вы открыть этот файл как файл PDF?

4. Ошибка обычно означает, что ввод равен 0 байтам.