我正在开发Chrome应用,我希望允许用户以PDF格式导出一些HTML表格。 我做了一些研究,我发现jsPdf是我需要的插件。 现在是我的问题。 jsPDF及其功能“fromHTML”使用Chrome Packaged App中没有的“document.writeln()”方法。
“未捕获的错误:document.writeln()在打包的应用中不可用。”
Console error as jspdf tries to use document.writeln()
我已经在互联网上进行了大量研究,发现有一些方法可以通过添加一些“document.create”来解决这个问题。但是虽然我不知道jspdf是如何工作的,但我真的不知道要创建什么。
jspdf中有一部分导致了这个问题:
VkGraphicsPipelineCreateInfo
这是我对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;
我将继续我的研究,但我现在真的失去了安全,我真的需要你的帮助!
我可能忘记说一些事情,只是让我知道,我会尽快修复它。
非常感谢!
答案 0 :(得分:0)
经过多次研究和一些rageQuits我找到了解决方案。我不知道它为什么会起作用,但确实如此,我会在这里分享一下,以防你们中的一个遇到这个问题。 我想这更像是一个技巧/黑客,而不是一个真正的解决方案。
取而代之:
doc.fromHTML($('#month').html(),15,15 ,{
width:600,
elementHandler:specialElementHandlers
});
doc.save('Tst.pdf');
由此:
doc.fromHTML($('#month')[0],15,15 ,{ //ONLY CHANGE IS HERE
width:600,
elementHandler:specialElementHandlers
});
doc.save('Tst.pdf');
会奏效。不再生成错误并将pdf成功下载到本地文件。
如果有人知道为什么会这样,我会很乐意学习,因为这很不好意思。
希望有一天能帮助somneone,
非常感谢'n'以后再见!