如何打印从服务器收到的HTML页面?

我试图打印一个我在服务器上使用Node.js生成的HTML页面。 我已经把页面带到客户端作为对AJAX请求的响应,并把它放在一个javascriptvariables中。

var resp_json = printRequest.getResponseJson();

现在我试图打印呈现的HTML页面(即没有标签),而不是将被发送的DOM对象。

我读了关于window.print()但它只打印浏览器中的当前页面。 任何人都可以build议我一种方法来处理。

另外,在节点生成一个HTML页面是正确的方法或应该是任何其他types的文件。 页面应该在节点上dynamic生成,最终的结果应该是一个打印的文档。 感谢提前!

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

PPS我是相当新的javascriptnode.js所以不要害怕给冗长的讲座,我都耳朵!

没有popup

 function printHTMLString(htmlString) { var originalDocument = document.body.innerHTML; document.body.innerHTML = htmlString; window.print(); document.body.innerHTML = originalDocument; } 

随着popup

 var popupWIndow = window.open('','','width=200,height=100'); popupWIndow.document.write(jsonResponse); popupWindow.window.print(); 

如果由于某种原因不起作用,请在print()之前添加以下行

 popupWindow.window.location.reload(); 

你也需要在打印之前将json对象转换为string

 JSON.stringify(jsonObject) 

但为了这一切的工作,浏览器必须能够读取它作为一个HTML页面,以便它可以呈现它。 JSON对象将不起作用。

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

有了它,你可以从任何页面直接从URL或文件呈现PDF。 它将把页面呈现为PDF格式,然后可以打印整个PDF文件。

NB:你可以打印一个页面或连接多个页面。

通常的做法是用你想打印的内容打开一个新的浏览器窗口,然后调用window.print()

你可以创build一个iframe,把你的html页面添加到iframe.src然后调用print:

 window.frames[yourIframeName].focus(); window.frames[yourIframeName].print();