Прежде всего, если вы не хотите вмешиваться в процесс загрузки PDF, нет необходимости явно использовать класс PdfParser
. Вместо этого вы можете использовать статический PDDocument.load
метод:
URL urlOfPdf = new URL(this.getWebDriver().getCurrentUrl());
BufferedInputStream fileToParse = new BufferedInputStream(urlOfPdf.openStream());
PDDocument document = PDDocument.load(fileToParse);
String output = new PDFTextStripper().getText(document);
В противном случае, если вы делаете хотите вмешаться в процесс загрузки, вам необходимо создать RandomAccessRead
экземпляр для вашего BufferedInputStream
, вы не можете просто приведение это потому что классы не связаны.
Вы можете сделать это так
URL urlOfPdf = new URL(this.getWebDriver().getCurrentUrl());
BufferedInputStream fileToParse = new BufferedInputStream(urlOfPdf.openStream());
MemoryUsageSetting memUsageSetting = MemoryUsageSetting.setupMainMemoryOnly();
ScratchFile scratchFile = new ScratchFile(memUsageSetting);
PDFParser parser;
try
{
RandomAccessRead source = scratchFile.createBuffer(fileToParse);
parser = new PDFParser(source);
parser.parse();
}
catch (IOException ioe)
{
IOUtils.closeQuietly(scratchFile);
throw ioe;
}
String output = new PDFTextStripper().getText(parser.getPDDocument());
(Это по сути копируется и вставляется из источника PDDocument.load
.)