使用javax.ws和angular打开pdf文件

时间:2018-04-23 13:18:36

标签: java angularjs rest pdf

我正在尝试使用Java Restful服务和angularjs打开保存在服务器中的PDF文件。 我在Java中的服务代码是:

@GET
@Path("/getPDF")
@Produces("application/pdf")
public Response getPDF() throws FileNotFoundException {
    File file = new File("/path/to/file.pdf");
    FileInputStream fileInputStream;
    fileInputStream = new FileInputStream(file);
    long contentLength = file.length();
    ResponseBuilder responseBuilder = Response.ok((Object) fileInputStream);
    responseBuilder.type("application/pdf");
    responseBuilder.header("Content-Disposition", "inline; filename=file.pdf");
    responseBuilder.header("Content-Length", contentLength);
    responseBuilder.header("charset", "utf-8");
    return responseBuilder.build();
}

返回Response后,我使用angularjs处理请求:

MyJavaService.getPDF().success(function(data){
    var file = new Blob([data], {type: 'application/pdf'});
    var fileURL = URL.createObjectURL(file);
    $window.open(fileURL);
});

结果是打开一个新窗口,页面数量与PDF文件相同(正确),但内容不显示,所有页面都是白色(不正确)。

有没有人知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

我假设您正在使用$ http.get()调用。

你可能有以下几点:

$http.get(<URL>, {params: <stuff>})

你需要告诉angular,responseType是一个arrayBuffer,如下所示:

$http.get(<URL>, {responseType: 'arraybuffer', params: <stuff>})

不要犹豫告诉我我的假设是不正确的。

p.s。:尽量避免使用.success()而是使用.then()。前者被弃用1.4+并在1.6 +

中完全删除