2012-04-22 2 views
5

Я создал приложение POS (Point of Sale) на PHP, которое может печатать непосредственно на термопринтере. В большинстве случаев я запускаю приложение на локальном веб-сервере с помощью WAMP.PHP-печать на локальный термальный принтер, не работает без сетевого имени

Часть кода печати является:

$printer = "\\\\localhost\\TM-T88V"; 

// Open connection to the thermal printer 
$fp = fopen($printer, "w"); 
if (!$fp){ 
    die('no connection'); 
} 

$data = " PRINT THIS "; 

// Cut Paper 
$data .= "\x00\x1Bi\x00"; 

if (!fwrite($fp,$data)){ 
    die('writing failed'); 
} 

Этот код работает отлично до тех пор, пока компьютер подключен к сети. Я могу заставить PHP подключиться к общему принтеру (либо на том же ПК, либо на ПК в сети), используя fopen и «LOCALHOST» или «COMPUTER-NAME»: fopen («\\ localhost \ TM-T88V », 'W');

Если я отключу компьютер от сети, PHP больше не сможет подключаться к \\ localhost или \\ COMPUTER-NAME.

Я пробовал такие вещи, как: fopen ('TM-T88V'), fopen ('\\. \ TM-T88V'), но я продолжаю получать "[function.fopen]: не удалось открыть поток: Нет такой файл или каталог ... ».

Как подключиться к локальному (совместно используемому) принтеру (желательно по имени) без активного сетевого подключения?

+1

При использовании петлевого-адаптера я нашел способ обойти эту проблему, таким образом, компьютер все еще «думает», что имеет сетевое соединение, чтобы он мог разрешить \\ localhost. Но я думаю, что должен быть способ напрямую подключиться к принтеру. –

+0

Привет, Bauke. Не могли бы вы объяснить это решение более подробно. Мы находимся в той же ситуации, что и ты, год назад. Мы не можем отправить печать на термографический принтер Zebra. Мы также пробовали ваш код, но он не работал. –

+1

Привет, Bauke. Спасибо тонну за эту идею. Мы смогли решить это, наконец, и в нашем конце. Единственное, что нам нужно было сделать, это обмениваться принтером по сети, а затем обращаться к нему через сеть. Адаптер Loopback не работал для нас. –

ответ

3

Вы пытались fopen("PRN", "w")?

+0

Да, у меня есть. Это также дает мне ошибку «не удалось открыть поток ...». Я установил термопринтер для принтера по умолчанию, но это тоже не помогает. –

+0

эти принтеры имеют последовательный интерфейс, а не (или едва) параллельный ... –

0

Вот фрагмент кода, я использую для моего задания печати в PHP:

$handle = printer_open('Printer Name in windows here'); 

if($handle) { // Make sure the printer is present before sending the job 
// print job here 
}