首页 > 解决方案 > Java将作为Rest API响应返回的pdf转换为文本

问题描述

我必须从返回 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();

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

标签: javarestjava-8inputstreamapache-tika

解决方案


对于 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();
    }
}

希望能帮助到你。


推荐阅读