[英]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.js
和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>
在最新版本的 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.