使用休息服务在浏览器中显示 pdf

2022-09-01 17:21:37

我正在使用japser报告生成一个pdf,我想创建一个REST Web服务,该服务将返回此pdf并将其显示在浏览器中。我已经尝试了此处显示的代码:

REST Web服务在浏览器中显示pdf文件的方法

但是通过这种方式,pdf文件被下载。我希望它首先显示在浏览器中,然后如果用户愿意,他可以稍后下载它。

(抱歉重复的问题,但如您所见,上述问题尚未得到解答...

编辑:

工作 REST 服务代码:

@GET
@Path("/pdf")
@Produces("application/pdf")
public javax.ws.rs.core.Response getPdf() throws Exception
{
    File file = new File("E:\\tmp\\test.pdf");
    FileInputStream fileInputStream = new FileInputStream(file);
    javax.ws.rs.core.Response.ResponseBuilder responseBuilder = javax.ws.rs.core.Response.ok((Object) fileInputStream);
    responseBuilder.type("application/pdf");
    responseBuilder.header("Content-Disposition", "filename=test.pdf");
    return responseBuilder.build();
}

答案 1

改变

response.header("Content-Disposition",  "attachment; filename=restfile.pdf");

response.header("Content-Disposition",  "filename=restfile.pdf");

答案 2

首先使用 InputStream,我们可以将文件加载到 inputstream 中,然后传递到 IOUtils.copy 并使用此 response.header(“Content-Disposition”, “attachment;文件名 = restfile.pdf“) 进行下载,请使用此文件进行预览 response.setHeader("Content-disposition", " filename=" + output)

    InputStream inputStream = new FileInputStream(new File(path)); // load the file
    IOUtils.copy(inputStream, response.getOutputStream());

    response.setContentType("application/pdf");
    response.setHeader("Content-disposition", " filename=" + output);

    response.flushBuffer();

该方法的返回类型为“响应实体”