我正在開發一個Chrome應用程序,我想允許用戶導出爲PDF格式的幾個HTML表格。 我做了一些研究,我發現jsPdf作爲我需要的插件。 現在出現我的問題。 jsPDF及其函數「fromHTML」使用Chrome Packaged App中不可用的方法「document.writeln()」。jspdf在Chrome打包應用程序:document.writeln()不可用
「未捕獲的錯誤:document.writeln()在打包的應用程序中不可用。」
Console error as jspdf tries to use document.writeln()
我犯了很多在互聯網上的研究,發現有一些方法來對付這個問題,通過添加一些「document.create」。但是,雖然我不知道jspdf是如何工作的,但我真的不知道要創建什麼。
有jspdf是造成這一問題的部分:
var $frame, $hiddendiv, framename, visuallyhidden;
framename = "jsPDFhtmlText" + Date.now().toString() + (Math.random() * 1000).toFixed(0);
visuallyhidden = "position: absolute !important;" + "clip: rect(1px 1px 1px 1px); /* IE6, IE7 */" + "clip: rect(1px, 1px, 1px, 1px);" + "padding:0 !important;" + "border:0 !important;" + "height: 1px !important;" + "width: 1px !important; " + "top:auto;" + "left:-100px;" + "overflow: hidden;";
$hiddendiv = document.createElement('div');
$hiddendiv.style.cssText = visuallyhidden;
$hiddendiv.innerHTML = "<iframe style=\"height:1px;width:1px\" name=\"" + framename + "\" />";
document.body.appendChild($hiddendiv);
$frame = window.frames[framename];
$frame.document.open();
$frame.document.writeln(element);//This causes "Uncaught Error: document.writeln() is not available in packaged apps."
$frame.document.close();
return $frame.document.body;
這裏是我的jspdf庫的電話,也許我犯了這裏的錯誤:
$('#exportMonth').click(function(){
console.log(TAG + "Starting rendering as PDF");
var doc = new jsPDF();
specialElementHandlers = {
// element with id of "bypass" - jQuery style selector
// here i've nothing to bypass, so nothing is 'bypassme'
'#bypassme': function(element, renderer) {
// true = "handled elsewhere, bypass text extraction"
return true
}
};
//the id 'month' refers to a div containing a html Table
doc.fromHTML($('#month').html(),15,15 ,{
width:600,
elementHandler:specialElementHandlers
});
doc.save('Tst.pdf');
console.log(TAG + "Should be done");
});
我會繼續我的研究,但我現在真的很失落,我真的需要你的幫助!
我可能忘記說一些事情,只是讓我知道,我會盡可能快地解決這個問題。
非常感謝!
您可以查看此鏈接:http://stackoverflow.com/questions/16954731/google-closure-and-chrome-packaged-apps-compatibility – abielita
@abielita感謝您考慮我的問題。我已經看過那篇文章幾次了,我的觀點是我不知道jspdf想寫什麼,所以我不能用document.create('我不知道')替換它。 – Kwarthys