我正在尝试打印我在服务器上使用Node.js
生成的HTML页面。我已将页面作为对AJAX请求的响应带到客户端,并将其放在javascript
变量中。
var resp_json = printRequest.getResponseJson();
现在我正在尝试打印呈现的HTML页面(即没有标签)而不是将要发送的DOM对象。
我阅读了window.print()
,但它只在浏览器中打印当前页面。任何人都可以建议我一种方法。
另外,在节点上生成HTML页面是正确的方法,还是应该是任何其他类型的文档。页面应该在节点处动态生成,最终结果应该是打印文档。 Thanx提前!!
P.S。我正在使用闭包库,不要问为什么,这已经为我决定了。
P.P.S。我是javascript
和node.js
的新手,所以不要害怕做冗长的讲座,我全都耳朵!
答案 0 :(得分:3)
没有弹出
function printHTMLString(htmlString) {
var originalDocument = document.body.innerHTML;
document.body.innerHTML = htmlString;
window.print();
document.body.innerHTML = originalDocument;
}
弹出
var popupWIndow = window.open('','','width=200,height=100');
popupWIndow.document.write(jsonResponse);
popupWindow.window.print();
如果由于某种原因它不起作用,请在print()
之前添加以下行popupWindow.window.location.reload();
您还需要在打印前将json对象转换为字符串
JSON.stringify(jsonObject)
但是为了使所有这些工作,浏览器必须能够将其作为HTML页面读取,以便它可以呈现它。 JSON对象不起作用。
答案 1 :(得分:1)
您可以使用https://code.google.com/p/wkhtmltopdf/
有了它,您可以直接从网址或文件中的任何页面呈现pdf。它会将页面呈现为pdf,然后您可以打印整个pdf。
nb:您可以打印一页或连接多个页面。
答案 2 :(得分:0)
通常的做法是打开一个包含您要打印的内容的新浏览器窗口,然后调用window.print()
答案 3 :(得分:0)
你可以创建一个iframe,将你的html页面添加到iframe.src
,然后调用print:
window.frames[yourIframeName].focus();
window.frames[yourIframeName].print();