Утверждать текст в PDF, используя PDFBox - Selenium / Java - PullRequest
0 голосов
/ 27 июня 2018

Я использую приведенный ниже метод, когда мне нужно выяснить, присутствует ли текст в загруженном мной файле PDF.

public void iShouldVerify() throws Throwable {
        export_inspections.verifyPDFContent("zzz");



public boolean verifyPDFContent(String reqTextInPDF) {

boolean flag = false;

PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
String parsedText = null;

try {
    File file = new File("/Users/mohand/Downloads/1956_ANewChecklistTemplate1Updated_BigTurnip_270618.pdf");
    PDFParser parser = new PDFParser(new FileInputStream(file));

    parser.parse();
    cosDoc = parser.getDocument();
    pdfStripper = new PDFTextStripper();
    pdfStripper.setStartPage(1);
    pdfStripper.setEndPage(1);

    pdDoc = new PDDocument(cosDoc);
    parsedText = pdfStripper.getText(pdDoc);
} catch (MalformedURLException e2) {
    System.err.println("URL string could not be parsed " + e2.getMessage());
} catch (IOException e) {
    System.err.println("Unable to open PDF Parser. " + e.getMessage());
    try {
        if (cosDoc != null)
            cosDoc.close();
        if (pdDoc != null)
            pdDoc.close();
    } catch (Exception e1) {
        e.printStackTrace();
    }
}

System.out.println("+++++++++++++++++");
System.out.println(parsedText);
System.out.println("+++++++++++++++++");
System.out.println(reqTextInPDF);


if (parsedText.contains(reqTextInPDF)) {
    flag = true;
}

return flag;
}

Проблема в том, что код пропускается, даже если в PDF нет текста, называемого "zzz", код выполняется.

Как мне это утверждать? Или есть лучший способ справиться с этим?

1 Ответ

0 голосов
/ 27 июня 2018

Попробуйте эту упрощенную версию:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.*;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.IOException;
import java.util.HashSet;
import java.net.*;
import java.io.*;
import java.io.FileInputStream;



public class X {
    public static boolean verifyPDFContent(String reqTextInPDF) throws IOException{

        PDDocument doc = PDDocument.load(new File("test.pdf"));
        PDFTextStripper pdfStripper = new PDFTextStripper();
        String text = pdfStripper.getText(doc);
        doc.close();
        System.out.println(text);
        return text.contains(reqTextInPDF);
    }

    public static void main( String [] args) throws IOException{
        System.out.println(verifyPDFContent("Charity"));
    }
}

Это работает для меня, я не могу на 100% определить, какой PDFbox вы используете, поэтому, если он не скомпилируется, мы можем быть на разных версиях (я на 2.0.3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...