【问题标题】:Print txt file using javascript使用javascript打印txt文件
【发布时间】:2026-02-12 03:00:02
【问题描述】:

我想知道是否可以使用 javascript 打印位于服务器中的 txt 文件。我注意到 window.print() 只是打开当前网页的打印对话框

【问题讨论】:

  • 仅使用 javascript 是不可能的。您还应该使用带有或不带有某些服务器脚本语言的 ajax。
  • 如果他们不想,你不能强迫他们打印页面。打印对话框是用户决定如何打印内容或决定他们是否真的不想打印任何内容的方式。

标签: javascript file printing


【解决方案1】:

您只能为用户打开打印对话框,这是应该的。如果您只想打印文本文档,有几种方法可以触发它的打印对话框。他们需要关注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>

【讨论】:

  • 在他的问题中,他说他希望打印文件而不仅仅是显示打印对话框。
  • @sv_in,你说得对,我忘了添加免责声明,你不能强迫用户打印他们不想打印的东西。
【解决方案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>

【讨论】:

    【解决方案3】:

    window.print() 只是打开当前网页的打印对话框是正确的。

    我建议您编写 JavaScript 代码来打开一个新窗口,将文本加载到该窗口中,然后在该窗口上调用 print() 函数。

    【讨论】:

      【解决方案4】:

      如果您只是不想删除页面内容并从文件中打印一些文本,您可以在此处执行此操作:

      <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>
      

      【讨论】:

        【解决方案5】:

        您可以通过创建网络服务来做到这一点。

        1. 创建一个 Web 服务,并在该 Web 服务中进行打印。

        2. 从 JavaScript 调用 Web 服务。

        如果您想知道如何使用 webservice there is a thread in * 进行打印,这可能会有所帮助。不要只看问题,也要浏览答案。

        【讨论】: