1

我正在尝试打印Node.js在我的服务器上使用生成的 HTML 页面。我已将页面带到客户端作为对 AJAX 请求的响应,并将其保存在javascript变量中。

var resp_json = printRequest.getResponseJson();

现在我正在尝试打印呈现的 HTML 页面(即没有标签)而不是要发送的 DOM 对象。

我读过,window.print()但它只在浏览器中打印当前页面。任何人都可以建议我一种方法。

此外,在节点处生成 HTML 页面是正确的方法,或者应该是任何其他类型的文档。该页面应该是在节点上动态生成的,最终结果应该是一个打印的文档。提前谢谢!!

PS我正在使用闭包库,不要问为什么,这已经为我决定了。

PPS 我还很陌生javascriptnode.js所以不要害怕做冗长的讲座,我全神贯注!!

4

4 回答 4

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 对象不起作用。

于 2013-06-01T09:16:15.750 回答
1

您可以使用https://code.google.com/p/wkhtmltopdf/

有了它,您可以直接从 url 或通过文件从任何页面呈现 pdf。它会将页面呈现为 pdf,然后您可以打印整个 pdf。

注意:您可以打印一页或连接多页。

于 2013-06-01T09:12:46.087 回答
0

您可以创建一个 iframe,将您的 html 页面添加到iframe.src,然后调用 print:

window.frames[yourIframeName].focus();
window.frames[yourIframeName].print();
于 2013-06-01T09:50:12.680 回答
0

常见的做法是打开一个包含您要打印的内容的新浏览器窗口,然后调用 window.print()

于 2013-06-01T09:11:31.697 回答