使用 PDFBox - Selenium/java 断言 PDF 中的文本



我使用以下方法,我需要查找我下载的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"的文本,代码也会通过,代码也会运行。

我该如何断言这一点?还是有更好的方法来解决这个问题?

试试这个简化版本:

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

最新更新