我使用下面的方法来确定我下载的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”的文本,代码也会通过。
我该如何断言?还是有更好的方法来解决这个问题?
答案 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上)。