我想知道是否可以使用javascript打印位于服务器中的txt文件。我注意到window.print()只打开当前网页的打印对话框
答案 0 :(得分:8)
您只能打开用户的打印对话框,这是应该的。如果您只想打印文本文档,可以通过几种方法触发打印对话框。它们需要遵循Same Origin Policy(您的HTML和TXT文件需要位于同一个域中)。
最简单的方法是用文本文件打开一个弹出窗口,并在窗口句柄上调用print返回:
w = window.open('text.txt');
w.print();
如果您希望用户预览文本文件,则可以改为使用iframe:
我建议将JS保留在HTML之外,这只是例如
<iframe id="textfile" src="text.txt"></iframe>
<button onclick="print()">Print</button>
<script type="text/javascript">
function print() {
var iframe = document.getElementById('textfile');
iframe.contentWindow.print();
}
</script>
答案 1 :(得分:2)
JQuery选项
<body>
<div id="txtdiv"></div>
<script type="text/javascript">
$('#txtdiv').load('trial.txt', function()
{
window.print(); //prints when text is loaded
});
</script>
</body>
答案 2 :(得分:1)
你是正确的window.print()
只打开当前网页的打印对话框。
我建议您编写JavaScript代码以打开新窗口,将文本加载到该窗口,然后在该窗口上调用print()
函数。
答案 3 :(得分:1)
如果您只是不想删除页面内容并从文件中打印一些文本,可以在此处执行此操作:
<body>
....some tags....
<script type="text/javascript">
// or onclick function
$.load('test.txt', function( printContent ){
history.pushState( printContent, 'Print title', '/print_page' );
document.write( printContent );
if( window.print() ){
document.location = '/back_page/';
// or history.go(-1);
} else {
document.location = '/history/';
}
});
</script>
答案 4 :(得分:-3)
您可以通过创建网络服务来完成此操作。
创建一个Web服务,并在Web服务中进行打印。
从JavaScript调用Web服务。
如果您想知道如何使用webservice there is a thread in stackoverflow进行打印,这可能有所帮助。不要只看问题,也要浏览答案。