Java将作为Rest API响应返回的pdf转换为文本

时间:2019-02-22 06:24:48

标签: java rest java-8 inputstream apache-tika

我必须从返回pdf文件的Java代码中使用api API(/ getconstomerList)作为其余部分。 我需要阅读PDF文件并将其转换为String。

我尝试用tika来做

BodyContentHandler handler = new BodyContentHandler(10 * 1024 * 1024);
Metadata metadata = new Metadata();
URL url = new URL("http://" + hostName + uri);
BufferedInputStream inputstream = new BufferedInputStream(url.openStream());
Parser parser = new AutoDetectParser();
parser.parse(inputstream, handler, metadata, pcontext);
return handler.toString();

但是此代码始终向我返回空响应,我不确定是什么错误或是否有其他方法可以执行此操作。请帮忙。

1 个答案:

答案 0 :(得分:0)

对于HTTP调用,我建议使用Retrofit库。您可以通过提供包含API方法的interface来轻松地设置/配置。这些方法之一将返回Call<ResponseBody>,从中获取ResponseBody,并使用它可以获取InputStream。使用它,您可以将流转换为文件并执行您想对其进行的操作。下面是示例代码。

String downloadFileAndReadAsString(ResponseBody responseBody, Path filePath) {
    try (InputStream inputStream = responseBody.byteStream()) {
        Path downloadedFilePath = Files.copy(inputStream, filePath, 
StandardCopyOption.REPLACE_EXISTING);
return new String(Files.readAllBytes(downloadedFilePath));
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

希望有帮助。