2012-06-27 3 views
0

Я хотел бы знать, можно ли распечатать файл txt, расположенный на сервере, с помощью javascript. Я заметил, что window.print() просто открывает диалоговое окно печати для текущей веб-страницыПечать файла txt с помощью javascript

+0

Это не представляется возможным только с помощью JavaScript. Вы также должны использовать ajax с или без какого-либо языка сценариев сервера. –

+2

Вы не можете заставить кого-то печатать страницу, если они этого не хотят. Диалоговое окно печати - это то, как пользователи решают * как * печатать что-либо или решают, действительно ли они ничего не хотят печатать. – zzzzBov

ответ

-3

Вы можете сделать это, создав веб-службу.

  1. Создайте веб-сервис и распечатайте материал в веб-сервисе.

  2. Позвоните в веб-службу из JavaScript.

Если вы задаетесь вопросом, как сделать печать с помощью веб-сервиса there is a thread in stackoverflow, которые могли бы помочь. Не смотрите на вопрос, ищите ответ.

1

Вы правы, что window.print() просто открывает диалоговое окно печати текущей веб-страницы.

Я предлагаю вам написать код JavaScript, чтобы открыть новое окно, загрузить текст в это окно, а затем вызвать в этом окне функцию print().

5

Вы можете открыть диалоговое окно печати для пользователя, и это так, как должно быть. Если вы хотите распечатать текстовый документ, есть несколько способов вызвать диалог печати. Они должны следовать за Same Origin Policy (ваши файлы HTML и TXT должны находиться в одном домене).

Самый простой способ, чтобы открыть всплывающее окно с текстовым файлом, и вызвать печать на оконной ручке вернулся:

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

В своем вопросе он говорит, что хочет, чтобы файл был напечатан, а не просто отображал диалоговое окно печати. –

+1

@sv_in, вы правы, я забыл добавить отказ от ответственности, что вы не можете заставить пользователя печатать то, что они не хотят. – zzzzBov

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

Смежные вопросы