将javascript生成的PDF文件上传到服务器

时间:2017-09-14 20:33:32

标签: javascript jquery pdf coldfusion pdfmake

请注意我上传的是运行时生成的文件,而不是用户提交的文件。这就是我的问题所在,获取该文件并将其发送并证明自己确实是一个挑战。

我使用PDFMake生成pdf文件。我需要花费很长时间才能使这段代码正常工作,tl; dr是我将pdf doc信息转换为缓冲区,使用该缓冲区创建一个新的File对象,将该文件对象附加到formdata对象,并将其发送到我的服务器。

以下是代码:

    var pdfGen = pdfMake.createPdf(docDef);

    pdfGen.getBuffer(function(buffer){
        var pdf = new File(buffer, "testpdf.pdf", {type: "application/pdf"});
        var data = new FormData();
        data.append('upload', pdf);
        data.append('content-type', 'application/pdf');

        $.ajax({
            method: "POST",
            url: "/index.cfm?action=admin:service.upload_pdf",
            data: data,
            processData: false,
            contentType: false,
            success: function(msg){
                console.log(msg);
            },
            error: function(msg){
                console.log(msg);
            }
        })
    })

问题是我在服务器上获得的文件不是有效的PDF。应用程序类型列为application / octet-stream。我将File对象推送到应该的功能是拒绝除了pdf之外的所有内容,所以我不确定错误的确切位置。

我已经在这里待了两天而且我不知所措,所以任何帮助都非常感激。

1 个答案:

答案 0 :(得分:2)

您是否尝试将生成的PDF转换为Base64,然后将结果发送到服务器? 这就是我的意思:

var pdfGen = pdfMake.createPdf(docDef);
pdfGen.getBase64((data) => {
    PostToServer(data);
});

来源:https://github.com/bpampuch/pdfmake