如何打印从服务器收到的HTML页面?
我试图打印一个我在服务器上使用Node.js
生成的HTML页面。 我已经把页面带到客户端作为对AJAX请求的响应,并把它放在一个javascript
variables中。
var resp_json = printRequest.getResponseJson();
现在我试图打印呈现的HTML页面(即没有标签),而不是将被发送的DOM对象。
我读了关于window.print()
但它只打印浏览器中的当前页面。 任何人都可以build议我一种方法来处理。
另外,在节点生成一个HTML页面是正确的方法或应该是任何其他types的文件。 页面应该在节点上dynamic生成,最终的结果应该是一个打印的文档。 感谢提前!
PS我正在使用封闭库,不要问为什么,这已经决定了我。
PPS我是相当新的javascript
和node.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();