Java 在线预览PDF文档

前端(Angular)

DocumentLooking(data) {
    //判断是否是PDF文件
    let suffix = data.file_suffix;
    if (suffix != 'pdf') {
        this.modal.warning({
            nzTitle: '文件预览',
            nzContent: '暂不支持预览此格式的文件!'
        });
        return;
    }
    this.downloading = true;
    
    this.apiService.fileDownload({fileId: data.fileId}).subscribe((res : any) => {
    if (res.code === '0') {
         const btr = atob(res.data);
         var n =  btr.length;
         var u8arr = new Uint8Array(n);
         while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
          }
        var pdfUrl = window.URL.createObjectURL( new Blob([u8arr],{type: 'application/pdf}));
        window.open(pdfUrl);
      } else {
            
      }
       
    
    })
}

后端(base64code)

public String fileDownload(Integer fileId) throws Exception {
    FileBaseInfo fileData = fileQueryDao.getFileInfo(fileId);
    //获取文件路径
    String filePath = rootPath + fileData.getFilePath();
    String fileName = fileData.getFileName();
    String fileSufix = fileData.getFileSufix();
    //创建文件
    File file = new File(filePath,fileName+"."+fileSufix);
    //判断文件存在与否

    FileInputStrram inputStream = null;
    try{
        inputStream = new FileInputStream(file);
        byte[] bytes = filetoBinary(inputStream);
        return new String(encodeBase64(bytes),StandardCharsets.UTF_8)
    } catch (E e) {
        throw e;    
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close(); 
            } catch (IOE e) {
                e.printStackTrace;
            }
        }
    }

}

private static byte[] fileToBinary(InputStream in) throws E {
    ByteArrayOutStream out = new ByteArrayOutStream();
    try {
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0 , len);
        }
    } catch (){
       throw e;
    } finally {
            if (in != null) {
                in.close();
            }
       }
        if (out != null) {
            return out.toByteArray();
        } else {
            return null;
        }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值