1

我想知道是否有人知道将生成的 PDF 文档保存到服务器的方法,而不是提示用户在本地下载它?

使用这个: http ://www.cloudformatter.com/CSS2Pdf

非常感谢

编辑:我正在使用以下 JS 来启动 PDF。

$(function(){
    $('#generatePDF').click(function(e) {
        e.preventDefault();

        var pdfdata = xepOnline.Formatter.Format('printableInvoice',
            {
                pageWidth:'216mm',
                pageHeight:'279mm',
                render: 'base64'
            }
        );
        console.log(pdfdata);
    });
});
4

1 回答 1

0

留下答案,因为下面的评论是相关的。最初的答案是如何获取源信息(使用“base64”选项),而不是最终的 PDF。

因此,如果您检查 Github 中的代码,则要获得内存中的最终 PDF:

https://github.com/Xportability/css-to-pdf/blob/master/js/xepOnline.jqPlugin.js

从第 602 行的“else”开始......如果您强制下载以外的任何内容,则执行此“else”。如果您选择“newwin”或“embed”作为方法并且浏览器嗅探 JS 并没有强制它重新下载(它在 Safari、IE 和移动浏览器上执行),则执行此“else”。

在成功的 AJAX 发布时,将执行函数“xepOnline.Formatter.__postBackSuccess”。此函数从第 863 行开始。在第 865 行,加载实际 PDF 的 base64 编码字节。如果您调试您的站点并在该代码行进行调试,您可以获得 var "base64" 的值,该值将是 base64 编码字节。

因此,如果您只考虑 Firefox 和 Chrome,那么您可以对代码进行一些修改以将结果发布回服务器而不显示它。如果您要考虑所有这些浏览器,则需要添加一些选项(例如说 option:'memory' 跳过所有浏览器嗅探,运行 AJAX 版本但具有自己的成功功能。

我可以考虑将其添加到库中,但您可以随意拉取它并自己制作一些模组。

于 2017-09-30T18:40:01.460 回答