【问题标题】:Downloading a pdf with jquery using jax-rs使用 jax-rs 使用 jquery 下载 pdf
【发布时间】:2014-06-01 13:39:13
【问题描述】:

我将尝试使用 jquery 和 jax-rs 下载 pdf 文件。 pdf文件将被动态创建。

出于测试目的,我刚刚设置了一个本地 pdf 文件。我需要解析一些参数以便稍后生成 pdf。我会将这些参数发布到服务器,然后服务器会发回一个 pdf 文件。现在我可以在 JS 端做什么才能最终看到 donwload-window?

Java 端:

@Path("/chatexport/") 公共类 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 对象是这样说的: No conversion from text to application/pdf

【问题讨论】:

    标签: java javascript jquery pdf jax-rs


    【解决方案1】:

    对于类似的问题,我使用了这种技术:单击下载按钮(或触发下载事件时)在页面内创建一个不可见的 iframe,并将 iframe 的源设置为 PDF URL。您还应该保留此技术的 Content-Disposition 标头。文件会自动下载。

    【讨论】:

    • 好吧,我没有专门针对 pdf 文件的特定下载网址。问题是我需要先发送 JSON 数据以确保生成 pdf。然后下载它。
    • 你仍然可以使用它。创建一个(动态)表单,它的目标是(隐藏的)iframe。您可以使用此表单 POST,并且仍然可以下载响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 2023-03-30
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多