簡體   English   中英

使用 JSPDF 在客戶端生成 PDF

[英]Generate PDF on client side using JSPDF

在我的應用程序中,我需要通過在客戶端本身解析 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,只需要在“dist”文件夾中找到的 jspdf.min.js,包括所有插件(除了 downloadify/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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM