使用 JSPDF 在客户端生成 PDF

Generate PDF on client side using JSPDF

本文关键字:PDF 客户端 JSPDF 使用      更新时间:2023-09-26

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

Pdf生成器.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"。如果我错过了什么,请告诉我。

我猜你忘了为sprintf.jsbase64 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

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

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

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

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