【问题标题】:Generate PDF on client side using JSPDF使用 JSPDF 在客户端生成 PDF
【发布时间】:2012-08-11 15:49:58
【问题描述】:

在我的应用程序中,我需要通过在客户端本身解析 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 is not defined.”。 如果我遗漏了什么,请告诉我。

【问题讨论】:

    标签: java javascript gwt pdf-generation jspdf


    【解决方案1】:

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

    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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您无需使用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 "";
        };
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-10-13
            • 2017-10-02
            • 2018-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-02
            相关资源
            最近更新 更多