java - 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();
但是这段代码一直给我返回空的响应,我不确定出了什么问题,或者是否有任何其他方法可以做到这一点。请帮忙。
解决方案
对于 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();
}
}
希望能帮助到你。
推荐阅读
- r - 如何重新排序 geom_bar 图表的条形?
- php - 在 Laravel 中为邮件添加自定义属性
- javascript - 空空如也
- django - Scrapy spider 在使用 Channels 实现 WebSockets 后无法在 Django 上工作(不能从异步上下文中调用它)
- merge - 如何创建具有某些特征的平均值和不同特征集合的位置/形状的特征集合?
- python-3.x - Python:对数性能对比
- php - Drupal7. 挂钩菜单(和其他)中的 url 不起作用
- javascript - 幻灯片中间没有出现猫头鹰轮播点
- excel - 带有 VLOOKUP 的 EXCEL 双 IF 语句 - 第二个 IF 语句出现处理错误
- mysql - 当我更新多对多关系中的实体时,如何阻止 Hibernate/JPA 删除连接表记录?