在selenium中阅读PDF:构造函数PDFParser(BufferedInputStream)未定义

时间:2016-08-30 17:22:02

标签: selenium pdf selenium-webdriver testng pdfbox

我收到错误

  

构造函数PDFParser(BufferedInputStream)未定义

我正在尝试使用Selenium阅读PDF内容。

WebDriver driver=new FirefoxDriver();
driver.get("http://www.axmag.com/download/pdfurl-guide.pdf");
URL TestURL = new URL("http://www.axmag.com/download/pdfurl-guide.pdf");
BufferedInputStream TestFile = new BufferedInputStream(TestURL.openStream());
PDFParser TestPDF = new PDFParser(TestFile);
TestPDF.parse();
String TestText = new PDFTextStripper().getText(TestPDF.getPDDocument());
System.out.println(TestText);
Assert.assertTrue(TestText.contains("Open the setting.xml, you can see it is like this"));

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

PDFBox 2.0.2的最佳代码(也适用于1.8。*)就是这样 - 您只需要调用PDDocument.load()打开PDF文件:

WebDriver driver = new FirefoxDriver();
driver.get("http://www.axmag.com/download/pdfurl-guide.pdf");
URL url = new URL("http://www.axmag.com/download/pdfurl-guide.pdf");
BufferedInputStream bis = new BufferedInputStream(url.openStream());
PDDocument doc = PDDocument.load(bis);
String text = new PDFTextStripper().getText(doc);
doc.close();
bis.close();
System.out.println(text);
Assert.assertTrue(text.contains("Open the setting.xml, you can see it is like this"));

答案 1 :(得分:1)

我遇到了你所遇到的同样的问题。问题是由于使用(Apache PDFBox 2.0.0 API)jar文件。 从构建路径中删除它们并使用(Apache PDFBox 1.8.11 API),因为2.0中的PDFParser类没有PDFParser(BufferedInputStream args)构造函数。但1.8有PDFParser(InputStream args)构造函数。所以它肯定会解决你的问题。

我也会分享我的代码。如果您需要帮助,可以从中获取。

InputStream is = new FileInputStream(getLatestFile);
        PDFParser parser = new PDFParser(is);
        parser.parse();
        String output=new PDFTextStripper().getText(parser.getPDDocument());
        System.out.println(output);
        parser.getPDDocument().close();