是否可以使用jQuery生成PDF?

Moh*_*Ram 16 pdf jquery

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

Nic*_*ver 16

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

  • 是的,有可能用javascript生成一个pdf ... http://stackoverflow.com/questions/742271/generating-pdf-files-with-javascript (10认同)
  • @YuriKolovsky - 大多数网络开发者实际上关心他们的内容是否至少在*大多数*浏览器中工作,如果你没有,那么你或者你是在一个严格控制的内部网环境中,或者你做错了什么. (5认同)
  • 因此,您应该为Intranet环境开发人员和非Intranet环境开发人员提供答案,因为问题没有提到OP是哪种类型的用户,所以只是说不可能对OP或其他人造成误导. (5认同)
  • @TimoHuovinen,你先生应该得到一个论证徽章. (2认同)

Dav*_*ard 5

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

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

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


Jam*_*ino 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
    }    
  } 
});
Run Code Online (Sandbox Code Playgroud)

2)一旦有了PDF内容,就可以使用base64数据技巧重定向浏览器以显示pdf。首先,将数据内容编码为base64。有许多库可以帮助您使用Javascript完成此操作。然后,通过document.location.href返回您的内容:

document.location.href = 'data:application/pdf;base64,' + base64PDFData;
Run Code Online (Sandbox Code Playgroud)

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

编辑

我应该提到,由于安全限制,数据uri将不幸地无法在IE中运行。


aka*_*aco 5

我想你可以使用这个插件

http://parall.ax/products/jspdf