3

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

PdfGenerator.java

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

入口点.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

4 回答 4

1

我猜你忘记为sprintf.jsand添加脚本了base64 js。由于jsPdf.js内部使用这两个 js。

入口点.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

于 2012-08-15T12:11:04.690 回答
1

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

如果有人在尝试找出 jsPDF 时遇到旧票,只需更新旧票,因为它不是很好的文档。

于 2014-12-10T21:22:01.630 回答
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 "";
};
于 2019-11-12T11:22:28.290 回答
0

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

于 2015-10-08T20:20:14.013 回答