我有一个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中上传。
答案 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的方法是否有效