gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:08:36 25 4
gpt4 key购买 nike

我正在尝试使用 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();
}

响应返回后,我用 angularjs 处理请求:

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

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

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

最佳答案

我假设您正在使用 $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+ 中完全移除

关于java - 使用 javax.ws 和 angular 打开 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49982158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com