Разрабатывается web интерфейс для тач терминала. Делается все под Ubuntu 10.10. Вот как из php отправить несколько строк на принтер, или сначала записать их в txt файл а потом отправить на печать. Знаю есть куча функций для работы с принтером, но там везде написано Windows Only Extensions.
К слову принтер - термо, т.е для чеков. USB интерфейс. На ubuntu поставила cups, он его находит, определяет и все прочее, можно выбрать как принтер по умолчанию. Но с cups я раньше не работала, и как вызвать печать из php тоже не знаю, подскажите пж кто чем может.
Спустя 36 минут, 4 секунды (18.05.2011 - 06:22) kirik написал(а):
http://www.cups.org/documentation.php/options.html
тоесть команда:
должна сработать.
тоесть команда:
exec('lp file.txt');
должна сработать.
Спустя 1 час, 30 минут, 59 секунд (18.05.2011 - 07:53) Гость_Skalka написал(а):
Цитата (kirik @ 18.05.2011 - 03:22) |
http://www.cups.org/documentation.php/options.html тоесть команда: exec('lp file.txt'); должна сработать. |
Эту функцию я пробовала, здесь непонятно файл он с сервера будет брать?? то есть если указать просто test.php он в корневой папке его искать будет? или как? Ну собственно реакции ноль.
Спустя 43 минуты, 54 секунды (18.05.2011 - 08:37) kirik написал(а):
Цитата (Гость_Skalka @ 18.05.2011 - 00:53) |
здесь непонятно файл он с сервера будет брать?? |
Файл он будет брать с той машины, на который выполняется этот код. Файл будет браться из той директории, откуда выполняется exec:
echo exec('pwd'); // допустим выведет /home/user/site.com
exec('lp file.txt'); // будет печатать файл /home/user/site.com/file.txt
но можно указать полный путь до файла от корня:
exec('lp /home/user/site.com/files/print/file.txt');
Цитата (Гость_Skalka @ 18.05.2011 - 00:53) |
то есть если указать просто test.php он в корневой папке его искать будет? |
Если указать test.php, то он распечатает _исходный код_ файла test.php.
Чтобы распечатать результат выполнения test.php, можно попробовать сделать так:
wget -O - http://localhost/test.php | lpr
Спустя 18 минут, 2 секунды (18.05.2011 - 08:55) Guest написал(а):
Цитата (kirik @ 18.05.2011 - 05:37) |
Чтобы распечатать результат выполнения test.php, можно попробовать сделать так: wget -O - http://localhost/test.php | lpr |
Сорри совсем голова кругом. Я имела ввиду test.txt обычный текстовый файл. После обеда опробую с путем, может чего выйдет.
Спустя 19 дней, 22 часа, 30 минут, 26 секунд (8.06.2011 - 07:26) Гость_Skalka написал(а):
Цитата (kirik @ 18.05.2011 - 05:37) |
но можно указать полный путь до файла от корня: exec('lp /home/user/site.com/files/print/file.txt'); |
Сорри что так долго молчала, неожиданно слегла в больницу. теперь вот вернулась к этому вопросу. Указываю след образом
<input type="button" value="Печатай блин!!!!!!!!" style="width:400px; height:400px;" onclick="<?php exec('lp /home/jt/WORK/test.txt'); ?>" />
Ноль реакции. если команду выполнить из консоли то принтер печатает.
На компьютере с которого необходимо произвести печать, веб интерфейс открывается по сети. Но сам файл лежит на компе с которого печатаю.
Спустя 1 час, 18 минут, 38 секунд (8.06.2011 - 08:44) kirik написал(а):
Гость_Skalka
То что вы написали смысла не несёт.
То что вы написали смысла не несёт.
Цитата (Гость_Skalka @ 8.06.2011 - 00:26) |
На компьютере с которого необходимо произвести печать, веб интерфейс открывается по сети. Но сам файл лежит на компе с которого печатаю. |
Тогда нужно либо указывать полный путь до файла (по smb, (s)ftp или http, смотря какой сервер) на дистанционной машине, либо заливать файл на ту машину, с которой будет производиться печать.
Спустя 2 минуты, 21 секунда (8.06.2011 - 08:47) Гость_Skalka написал(а):
Цитата (kirik @ 8.06.2011 - 05:44) | ||
Гость_Skalka То что вы написали смысла не несёт.
Тогда нужно либо указывать полный путь до файла (по smb, (s)ftp или http, смотря какой сервер) на дистанционной машине, либо заливать файл на ту машину, с которой будет производиться печать. |
Так test.txt и так лежит на той машине откуда печатаю. Вот по этому пути /home/jt/WORK/test.txt
еще раз говорю никакой реакции при нажатии кнопки в браузере нет.
Спустя 29 минут, 54 секунды (8.06.2011 - 09:17) kirik написал(а):
Цитата (Гость_Skalka @ 8.06.2011 - 01:47) |
никакой реакции при нажатии кнопки в браузере нет |
И не будет, потому что написано не правильно. Точнее должен печатать, но не при нажатии кнопки, а при выводе страницы.
Если просто сделать скрипт с содержанием:
<?php
echo 'Printing...';
exec('lp /home/jt/WORK/test.txt');
и обратиться к этому скрипту, то распечатает?
Спустя 17 минут, 49 секунд (8.06.2011 - 09:34) Гость_Skalka написал(а):
Цитата (kirik @ 8.06.2011 - 06:17) | ||
И не будет, потому что написано не правильно. Точнее должен печатать, но не при нажатии кнопки, а при выводе страницы. Если просто сделать скрипт с содержанием: <?php и обратиться к этому скрипту, то распечатает? |
нет, никакой реакции
Спустя 10 часов, 43 минуты, 42 секунды (8.06.2011 - 20:18) kirik написал(а):
Цитата (Гость_Skalka @ 8.06.2011 - 02:34) |
нет, никакой реакции |
Тогда опросник:
- php стоит нормально?
- phpinfo(); работает?
- php стоит как mod_apache или как fcgi модуль?
- какая ОС используется?
- как обращаетесь к php файлу?
Спустя 1 час, 23 минуты, 28 секунд (8.06.2011 - 21:42) XCross написал(а):
А с хостером так поиграться можно?
Спустя 4 часа, 10 минут, 21 секунда (9.06.2011 - 01:52) kirik написал(а):
Цитата (kmaks @ 8.06.2011 - 14:42) |
А с хостером так поиграться можно? |
Не думаю что в ДЦ к серверам принтеры подключают

Спустя 5 часов, 5 минут, 35 секунд (9.06.2011 - 06:58) Гость_Skalka написал(а):
Цитата (kirik @ 8.06.2011 - 17:18) | ||
Тогда опросник: - php стоит нормально? - phpinfo(); работает? - php стоит как mod_apache или как fcgi модуль? - какая ОС используется? - как обращаетесь к php файлу? |
1. В смысле нормально?
2. phpinfo() работает отображает след. Не знаю что именно нужно.

3. установлен из менеджера пакетов
4. На вирт. сервере Windows. на машине где нужно распечатать Ubuntu 11.04
5.
<input type="button" id="printpage" value="Печать" onclick="location.href='/content/print.php'"/>
файл print.php
<?php
echo 'Printing...';
exec('lp /home/jt/WORK/test.txt');
?>
Спустя 4 минуты, 21 секунда (9.06.2011 - 07:02) XCross написал(а):
Цитата |
Не думаю что в ДЦ к серверам принтеры подключают |
Попробовать стоит =)

Спустя 36 минут, 1 секунда (9.06.2011 - 07:38) kirik написал(а):
Цитата (Гость_Skalka @ 8.06.2011 - 23:58) |
На вирт. сервере Windows. на машине где нужно распечатать Ubuntu 11.04 |
Немного не понял.. Судя по phpinfo, php у вас стоит на windows, а там наша команда работать не будет. Однако принтер подключен к ubuntu, и cups стоит там же. Тоесть получается что web сервер и php стоит на windows, которая запущена как гостевая виртуальная машина на ubuntu? А на ubuntu лишь принт-сервер с настроенным принтером? Или как..?
Спустя 2 часа, 50 минут, 38 секунд (9.06.2011 - 10:29) skalka написал(а):
Цитата (kirik @ 9.06.2011 - 04:38) |
Немного не понял.. Судя по phpinfo, php у вас стоит на windows, а там наша команда работать не будет. Однако принтер подключен к ubuntu, и cups стоит там же. Тоесть получается что web сервер и php стоит на windows, которая запущена как гостевая виртуальная машина на ubuntu? А на ubuntu лишь принт-сервер с настроенным принтером? Или как..? |
Я наверное неправильно выразилась. Ни о какой виртуальной машине речи не было. Просто у меня на Windowse стоит... как это правильно обозвать не знаю. Локальный сервер короче. TopServer. web приложение лежит там. ну и php соответственно тоже. А на машине где убунту, я захожу в браузер и просто по ай пи захожу на страницу. cups и принтер на машине где убунту. там же файл для печати(test.txt). там же, мне нужно чтобы после определенных действий пользователя в браузере, на принтер вывелся текстовый файл.
Спустя 2 часа, 37 минут, 4 секунды (9.06.2011 - 13:06) skalka написал(а):
Короче засада полнейшая я так поняла. php скрипты выполняются на сервере где сейчас у меня стоит windows, но в дальнейшем приложение вообще на freebsd будет перенесено. из js ни скрипт ни приложение не запустишь. при печати страницы браузера выползает окно с настройками принтера, что совершенно не нужно.
есть такой вариант чтобы из php отправить файл или несколько строк на сетевой принтер, который на терминале на котором cups и убунту? cups настроен, в сети он отображается.
есть такой вариант чтобы из php отправить файл или несколько строк на сетевой принтер, который на терминале на котором cups и убунту? cups настроен, в сети он отображается.
Спустя 7 часов, 52 минуты, 45 секунд (9.06.2011 - 20:58) kirik написал(а):
Немного прояснилось
Но всё равно немного не понятно.. Какая будет конечная архитектура терминала?

Цитата (skalka @ 9.06.2011 - 06:06) |
есть такой вариант чтобы из php отправить файл или несколько строк на сетевой принтер, который на терминале на котором cups и убунту? cups настроен, в сети он отображается. |
Я не знаю как это сделать из-под windows. Но можно немного подкостылить:
- на сервере с windows сделать php скриптик который будет через curl (например) обращаться к _http://ip_сервера_с_ubuntu/print.php, при этом передать ему через POST текст, который будем печатать
- на сервере с ubuntu поднять web сервер с php.
- В print.php написать кусок кода, который будет принимать некий POST-параметр и печатать эти данные (как мы делали через exec)
Очевидный плюс этого способа в том, что при миграции клиента с windows на freebsd нам не нужно будет ничего менять.
Но можете поискать информацию насчёт печати в windows с использованием удалённого принтера через .bat файл... или как-то так..
Спустя 14 часов, 48 минут, 9 секунд (10.06.2011 - 11:47) skalka написал(а):
Ну в общем замучилась я мучиться, идея с web сервером конечно некрасива, потому что терминалов будет несколько, но пришлось сделать так. Только база будет лежать на основном серваке на фряхе. Спасибо за помощь.

Спустя 9 часов, 5 минут (10.06.2011 - 20:52) kirik написал(а):
skalka
Если бы вы описали конечную архитектуру системы, и что от неё требуется, вероятно можно было бы предложить более красивое решение.
Если бы вы описали конечную архитектуру системы, и что от неё требуется, вероятно можно было бы предложить более красивое решение.