使用spring阅读附件PDF文件

时间:2018-08-01 12:25:03

标签: java spring rest resttemplate

我有一个Get API,可以通过它下载PDF。使用Spring rest模板,我可以获取内容,但是当我创建PDF文件时,它正在创建一个空白pdf。

我正在使用byte []创建一个新文件。

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_PDF));
HttpEntity<String> entity = new HttpEntity<>(headers);

ResponseEntity<String> result =
restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);


String content = response.getBody();
byte[] bytes = content.getBytes();
Files.write(Paths.get("/home/123.pdf"), bytes, StandardOpenOption.CREATE );

反正请建议我这样做,最后是我的目标
 在S3中上传。

2 个答案:

答案 0 :(得分:1)

您的请求标头还应包含MediaType.APPLICATION_OCTET_STREAM

此响应对象将返回一个字节数组-这将是您的pdf。

因此,完整的示例将是这样的-

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_PDF, MediaType.APPLICATION_OCTET_STREAM));
HttpEntity<String> entity = new HttpEntity<>(headers);

ResponseEntity<byte[]> result =
restTemplate.exchange(uri, HttpMethod.GET, entity, byte[].class);


byte[] content = response.getBody();
Files.write(Paths.get("/home/123.pdf"), content, StandardOpenOption.CREATE );

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用PDFbox(或itext)API,这是解析和创建PDF的好方法。它将允许您放置文本等,

  @Repository("userRepository")
public interface UserRepository extends JpaRepository<User, Long> {
     User findByEmail(String email);
}

@Repository("roleRepository")
public interface RoleRepository extends JpaRepository<Role, Integer>{
    Role findByRole(String role);

}

如果空白检查值是否为空,则足以创建PDF

我个人使用球衣来链接客户端和服务器,所以我无法真正告诉您获取pdf的方法是否有效