使用JSPDF在客户端生成PDF

时间:2012-08-15 10:32:10

标签: java javascript gwt pdf-generation jspdf

在我的应用程序中,我需要通过在客户端本身解析HTML来下载pdf。为了在客户端生成pdf,我使用的是jsPdf。以下是我的代码。

PdfGenerator.java

public static native String createPDF() /*-{
        $wnd.createPDF(); 
}-*/;

entrypoint.html

 function createPDF(){
         try {
          var doc = new jsPDF();
           doc.text(20, 20, 'This PDF has a title, subject, author, keywords and a crea');
           doc.output('datauri');
           var out = doc.output();
           var url = 'data:application/pdf;base64,' + Base64.encode(out);
           document.location.href = url;
        } catch (e) {
            return e.message;
        }
        return "";
};

我已经在我的项目和定义的脚本中添加了所有js。但每当我调用此方法时,它就会输出“sprintf未定义。”。 如果我错过了什么,请告诉我。

4 个答案:

答案 0 :(得分:1)

我猜您忘记添加sprintf.jsbase64 js的脚本。由于jsPdf.js在内部使用这两个j。

<强> entrypoint.html

<script type="text/javascript" src="base64.js"></script>
<script type="text/javascript" src="sprintf.js"></script>
<script type="text/javascript" src="jspdf.js"></script>

请参阅此链接http://forums.webhosting.uk.com/web-designing-development/6718-jspdf-generating-your-pdf-web-page-documents-using-javascript.html

答案 1 :(得分:1)

在jsPDF的最新版本中,你不需要base64或sprintf,只需在'dist'文件夹中找到jspdf.min.js,包括所有插件(downloadify / swfobject除外)。

如果有人在试图找出jsPDF时因为它没有那么好的文档,那么只需更新一张旧票。

答案 2 :(得分:1)

您无需使用window.location使代码复杂化。 JsPDF具有方法.save()来处理它。

function createPDF(){
         try {
           var doc = new jsPDF();
           doc.text(20, 20, 'This PDF has a title, subject, author, keywords and a crea');
           doc.save('file_name.pdf');
        } catch (e) {
            return e.message;
        }
        return "";
};

答案 3 :(得分:0)

根据您支持的浏览器(所有浏览器版本和IE 10+),您甚至不需要包含Base64.encode()。只需拨打btoa()即可。