1.得到pdf文件的url地址,在代码中截取第一页作为图片,以base64格式加密输出
2.直接贴代码
private Map<String,Object> getFirstPageAsImgByPdf(String url){
Map<String,Object> result = new HashMap<>();
String res = null;
PDDocument pd = null;
try {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<byte[]> response = restTemplate.getForEntity(url, byte[].class);
// 加载pdf文件
pd = PDDocument.load(new ByteArrayInputStream(response.getBody()));
// 准备pdf文件渲染对象
PDFRenderer pdfRenderer = new PDFRenderer(pd);
// 判断pdf页数
if (pd.getNumberOfPages() > 0) {
// 设置页数(首页从0开始)、每英寸点数、图片类型
BufferedImage bim = pdfRenderer.renderImageWithDPI(0, 96, ImageType.RGB);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 将图片写入到图片对象中
ImageIO.write(bim, "png", bos);
String base64Img = Base64Utils.encodeToString(bos.toByteArray());
res = "data:image/jpg;base64," + base64Img;
result.put("flag",true);
result.put("message",res);
return result;
}
result.put("flag",false);
result.put("message","文件页数为0,请上传正确的文件");
return result;
} catch (Exception ex) {
result.put("flag",false);
result.put("message","获取pdf首页作为图片失败");
return result;
}
}
3.结果map中返回true,则成功,并返回base64加密的文件流信息;返回false,返回报错提示信息