Печать PHP mike42 / escpos-php с iPhone (удаленный веб-сайт) на локальный принтер - PullRequest
0 голосов
/ 20 мая 2019

У меня есть веб-сайт (на удаленном сервере), и пользователь просматривает его на iPhone (Safari).

Я пытаюсь добиться того, чтобы пользователь мог печатать текстовый файл с этогосайт для POS-принтера (термопринтер REGO, RG-MTP58B).Этот принтер не поддерживает AirPrint, но является Wi-Fi-принтером и использует 172.20.10.2:9100 IP и порт.

Насколько я понимаю, я не могу напрямую печатать с сервера, так как принтер не в сети сервера, но в локальной сети.

Я использую этот пакет: https://github.com/mike42/escpos-php, как я вижу, это единственное, что все еще поддерживается.

Я пробовал таким образом:

$connector = new FilePrintConnector("php://stdout");
$printer   = new Printer($connector);
$printer->text("Hello World!\n");
$printer->cut();
$printer->close();

Но это просто дает белую страницу, и принтер ничего не получает.

Я пытался сохранить файл на сервере, открыть его в Safari, но Safari не предоставляетвозможность распечатать его (даже в области «Поделиться»).

Итак, я обнаружил, что пакет Author делает это:

$connector = new DummyPrintConnector();
$profile = CapabilityProfile::load("TSP600");
$printer = new Printer($connector);
$printer->text("Hello world!\n");
$printer->cut();
// Get the data out as a string
$data = $connector->getData();
// Return it, check the manual for specifics.
header('Content-type: application/octet-stream');
header('Content-Length: '.strlen($data));
echo $data;
// Close the printer when done.
$printer->close();

(оригинальный код: здесь )

В этом случае он создает файл и показывает его так:

enter image description here

Опять же, он не обеспечиваетвозможность распечатать его (даже в области «Поделиться»).

Содержимое файла является двоичным:

<0x1b>@Hello world!
<0x1d>VA<0x03>

Как отправить эти данныек принтеру?

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Вот одно из возможных решений - создать простое приложение с компонентом веб-просмотра, которое открывает URL-адрес веб-сайта вашего сервера.

  1. Создайте простое веб-приложение для iPhone. Вы можете использовать wkwebview на свой сервер см wkwebview

  2. Считайте квитанцию ​​ содержимое из веб-просмотра и проанализируйте квитанцию.

    - Обязательно отформатируйте текст чека, используя Коды Esc / POS , чтобы отформатировать текст, линии подачи и обрезать бумагу. Почти каждый чековый принтер использует коды Esc / POS, а многие недорогие термопринтеры, подобные этому, на самом деле используют движок Seiko Epson Corporation (SEC). Вот почему этот код PHP, вероятно, хорошо работает со многими принтерами.

  3. Используйте прямое Socket подключение к принтеру в локальной сети из приложения iPhone. Таким образом, вы можете убедиться, что телефон и принтер находятся в одной сети.

Если вы не являетесь поклонником swift, вы также можете создать приложение с Xamarin или Apache Cordova и другими.

0 голосов
/ 29 мая 2019

Я связался с производителем принтера (принтера Rego), и в основном они не разрешают внешнее подключение, это означает, что вы должны печатать локально.

...