サーバーにあるtxtファイルをjavascriptを使って印刷できるかどうか知りたいのですが。window.print()が現在のWebページの印刷ダイアログを開くだけであることに気づきました
5 に答える
ユーザーの印刷ダイアログのみを開くことができますが、それは本来あるべきことです。テキストドキュメントのみを印刷する場合は、印刷ダイアログをトリガーする方法がいくつかあります。同一生成元ポリシーに従う必要があります(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>
JQuery オプション
<body>
<div id="txtdiv"></div>
<script type="text/javascript">
$('#txtdiv').load('trial.txt', function()
{
window.print(); //prints when text is loaded
});
</script>
</body>
window.print()
現在の Web ページの印刷ダイアログを開くだけで正解です。
JavaScript コードを記述して新しいウィンドウを開き、テキストをそのウィンドウにロードしてから、そのウィンドウでprint()
関数を呼び出すことをお勧めします。
ページのコンテンツを削除してファイルからテキストを印刷したくない場合は、次のようにします。
<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>
これを行うには、Web サービスを作成します。
Web サービスを作成し、Web サービスで印刷を行います。
JavaScript から Web サービスを呼び出します。
Web サービスを使用して印刷を行う方法を知りたい場合は、stackoverflowに役立つスレッドがあります。質問を見るだけでなく、回答も参照してください。