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

标签 java rest java-8 inputstream apache-tika

我必须从返回pdf文件的java代码中使用rest api API(/getconstomerList)。 我需要读取 PDF 文件并将其转换为字符串。

我尝试用 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();

但是这段代码一直返回空响应,我不确定出了什么问题或者是否有其他方法可以做到这一点。请帮忙。

最佳答案

对于 HTTP 调用,我建议 Retrofit图书馆。您可以通过提供 interface 轻松设置/配置包含 API 方法。其中一种方法将返回 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();
    }
}

希望有帮助。

关于Java 将作为 Rest API 响应返回的 pdf 转换为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54821214/

相关文章:

JAVA - 将mysql结果放入表中

hibernate - 如何使用 Spring Data 的可选 <Object> 返回

Java 8 流 - 修改组中的所有元素

java - 在不忽略 SSL 错误的情况下,Android Web View 中握手失败的 SSL 错误的最佳解决方案

java - getResourceAsStream 线程安全吗?

Java - 是否可以以这种方式使用观察者模式和线程?

java - 使用 Seam/JSF 获取表单请求

java - 使用 mockito 的 restful 客户端的 Junit 测试用例

c# - 休息调用 Azure

java-8 - Java 8 的循环依赖分析 - 用于自动构建