我将尝试使用 jquery 和 jax-rs 下载 pdf 文件。 pdf 文件将动态创建。
出于测试目的,我刚刚设置了一个本地 pdf 文件。我需要解析一些参数以稍后生成pdf。我将这些参数发布到服务器,服务器发回一个 pdf 文件。现在我可以在 JS 端做什么才能最终看到下载窗口?
Java 端:
@Path("/chatexport/") 公共(public)类 ChatExportController {
private static final String FILE_PATH = "c:\\own\\test.pdf";
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces("application/pdf")
public Response getFile(List<ChatMessage> chatMessageList) {
File file = new File(FILE_PATH);
ResponseBuilder response = Response.ok((Object) file);
response.header("Content-Disposition",
"attachment; filename=new-android-book.pdf");
return response.build();
}
Javascript 端:
$.ajax({
type: "POST",
url: EXPORT_URL,
contentType: "application/json",
data: JSON.stringify([{authorId:"1",timestamp:123,content:"Test123"}]),
dataType: "application/pdf",
success: function (json, status) {
if (status != "success") {
console.log("Error loading data");
return;
}
console.log("Data loaded!");
},
error: function (result, status, err) {
console.log("Error loading data", err);
return;
}
});
抛出的错误回调中的 err 对象表示:
没有从文本到 application/pdf 的转换
最佳答案
对于类似的问题,我使用了这种技术:当点击下载按钮时(或者触发下载事件时),在页面内创建一个不可见的 iframe,并将 iframe 的来源设置为 PDF URL。您还应该保留此技术的 Content-Disposition header 。文件会自动下载。
关于java - 使用 jax-rs 使用 jquery 下载 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23130499/