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

时间:2013-06-01 09:06:07

标签: javascript html ajax node.js

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

var resp_json = printRequest.getResponseJson();

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

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

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

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

P.P.S。我是javascriptnode.js的新手,所以不要害怕做冗长的讲座,我全都耳朵!

4 个答案:

答案 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();