使用PDFBox声明PDF中的文本-Selenium / java

时间:2018-06-27 10:07:28

标签: java selenium-webdriver testng

我使用下面的方法来确定我下载的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 :(得分:1)

尝试以下简化版本:

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上)。