在浏览器中预览、下载pdf文件

浏览器直接打开pdf文件: 

1
2
const pdfWindow = window.open(url, '_blank');
pdfWindow.print();

  如果上面的代码是直接下载了pdf文件, 则可以改为:

window.open(api/dms/downloadViewFile + '?url=' + res, '_blank');
后端代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@GetMapping(value = "/downloadViewFile")
public @ResponseBody ResponseEntity<Resource> downloadViewFile(@RequestParam("url") String url) {
    logger.debug("url: {}", url);
    String contentType = "application/pdf";
    ResponseEntity<byte[]> bytes = ResponseEntity.ok().body(null);;
    try {
        bytes = new RestTemplate().getForEntity(url, byte[].class);
    } catch (Exception e) {
        url = url.replace("https","http");
        bytes = new RestTemplate().getForEntity(url, byte[].class);
    }
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Objects.requireNonNull(bytes.getBody()));
    ResponseEntity<Resource> res= ResponseEntity.ok().contentType(MediaType.parseMediaType(contentType))
            .header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + "tu.pdf" + "\"").body(new InputStreamResource(byteArrayInputStream));
    return res;
}

  

 

posted @   zhoudingzhao  阅读(1378)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示