是否可以使用jQuery生成PDF?

时间:2010-12-20 13:22:19

标签: jquery pdf

我正在使用Ajax功能来检索我的内容,我需要在jQuery.ajax()成功时导出PDF。我怎么能这样做?

6 个答案:

答案 0 :(得分:16)

jQuery不能(因为JavaScript不能)从数据创建PDF,没有......它可以从服务器获取一个(就像任何其他请求一样),但它不能生成一个。 JavaScript根本没有一种机制(尽管现在有一些HTML5选项正在实现)来创建/保存跨浏览器的文件,特别是二进制文件。

答案 1 :(得分:5)

如果可能的话,服务器端是生成PDF的更好选择。大多数用户可能会更快,并且通过标准HTTP请求返回文件比当前客户端选项更强大。

也就是说,这个库将在客户端生成PDF:http://snapshotmedia.co.uk/blog/jspdf

在支持数据URI的浏览器中,它可以直接返回PDF。在其他浏览器中,您可以将其与名为D​​ownloadify的Flash组件耦合以实现相同目的。

答案 2 :(得分:5)

如果您在AJAX成功中从服务器检索PDF数据并需要将其作为下载输出给您的用户,则可以使用一小段base64编码来完成。如果我理解正确,您很可能有一个场景,您的服务器可能会成功返回PDF或其他一些数据类型(如XML)。在这种情况下,您有两个步骤来处理请求:

1)通过标题确定内容类型。以下是根据响应拆分处理程序的示例:

$.ajax({

  type: "POST", url: "/test", data: someData, success: function(response, status, xhr){ 
    var ct = xhr.getResponseHeader("content-type") || ""; 
    if (ct.indexOf(‘xml’) > -1) {
      // handle xml here
    }
    if (ct.indexOf(‘pdf’) > -1) {
      // handle pdf here
    }    
  } 
});

2)获得PDF内容后,您可以使用base64数据技巧重定向浏览器以显示pdf。首先,在base64中编码数据内容。有一个number of libraries可以帮助您在Javascript中执行此操作。然后,通过document.location.href:

返回您的内容
document.location.href = 'data:application/pdf;base64,' + base64PDFData;

那应该得到你需要的东西。理论上,您可以使用此方法将任何内容类型转发到浏览器。

修改

我应该提一下,遗憾的是,数据uri无法在IE due to security restrictions中使用。

答案 3 :(得分:5)

我认为你可以使用这个插件

http://parall.ax/products/jspdf

答案 4 :(得分:3)

将此添加到您的脚本中:

<script src="https://docraptor.com/docraptor-1.0.0.js"></script>
DocRaptor.createAndDownloadDoc("YOUR_API_KEY_HERE", {
    test: false, // test documents are free, but watermarked
    type: "pdf",
    name: planStatus+"_" +assessmentYear+"_"+employeeId+ ".pdf",
    document_content: document.querySelector('#MyDoc').innerHTML, // use this page's HTML
    // document_content: "<h1>Hello world!</h1>",               // or supply HTML directly
    // document_url: "http://example.com/your-page",            // or use a URL
    // javascript: true,                                        // enable JavaScript processing
    // prince_options: {
    //   media: "screen",                                       // use screen styles instead of print styles
    // }
})

答案 5 :(得分:2)

如果您正在处理的HTML是一个表,您可以使用带有TableTools的jquery.dataTables插件来生成PDF。它在幕后使用Flash,并且在格式化方面受到严格限制,但它确实生成PDF。

http://datatables.net/extras/tabletools/