如何将Jersey REST服务PDF响应数据转换为base64

时间:2018-12-30 17:14:51

标签: reactjs pdf jersey base64

我有一个Jersey REST服务器来响应PDF(应用程序/ pdf)给React。 我想在客户端将PDF转换为base64,然后显示到新窗口。 但是,使用FileReader转换后,pdf将丢失内容。(就像这篇文章:FileReader losing data when reading PDF

Jersey服务器代码:

@Override
@GET
@Path("/pdf")
@Produces(MediaType.APPLICATION_PDF_VALUE)
public Response testPdf() throws Exception {
    // TODO Auto-generated method stub
    File file = new File("C:\\test.pdf");
    FileInputStream fileInputStream = new FileInputStream(file);

    ResponseBuilder response = Response.ok((Object) fileInputStream);
    response.type("application/pdf");
    response.header("Content-Disposition", "filename=test.pdf");

    return response.build();
}

反应客户端:

axios.get(/test/pdf).then((response) => {
            let reader = new FileReader();
            var file = new Blob([response.data], { type: 'application/pdf' });

            reader.onloadend = () => {
                // that.setState({

                let pdfWindow = window.open("")
                pdfWindow.document.write("<iframe width='100%' height='100%' src='" +reader.result+"'></iframe>")
            }


            reader.readAsDataURL(file);
        })

任何人都可以帮助我在React中将PDF转换为base64吗?

谢谢

0 个答案:

没有答案