Печать этикеток на термопринтере, из мобильного приложения 1c на IOS

1. KAV2 157 28.12.19 22:04 Сейчас в теме
Коллеги, а есть у кого нибдуь положительный опыт печати этикеток на Wi-Fi термопринтере, из мобильного приложения 1c на IOS?
Интересует в принципе даже коммерческое решение, не обязательно бесплатное.

Встроенный механизм печати работает, но криво.
Есть возможность печати с помощью формата ZPL (используется принтер Zebra), набор команд, в формате ZPL можно отправить следующим образом:

- Отправить ZPL команды по протоколу FTP (принтер поддерживает, но мобильная платформа нет, нужна компонента или внешняя утилита с командной строкой)
- Отправить ZPL команды по протоколу TCP/IP (принтер вроде бы поддерживает, но платформа нет, нужна компонента).
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. coollerinc 196 28.12.19 23:08 Сейчас в теме
Погуглите "Сервер печати", админы вам помочь могут. Даже у самой зебры есть свой
3. KAV2 157 28.12.19 23:32 Сейчас в теме
(2) Не уточнил в вопросе такой момент: сам принтер подключен на прямую к мобильному устройству через wi-fi, но не к корпоративной сети, то есть это прямая связь между устройствами, без подключения к корпоратвной сети и серверу 1С.
Если бы такая связь была. то можно было бы отправлять по протоколу FTP через сервер 1С.
5. KAV2 157 07.01.20 11:19 Сейчас в теме
Решился вопрос, оказалось что принтер также поддерживает отправку ZPL команд с помощью http запросов.
6. Micvant 21.09.21 09:23 Сейчас в теме
(5) А можно пример такого запроса?
7. KAV2 157 22.09.21 13:30 Сейчас в теме
(6)
Procedure Print(ZPL) Export
				
	Connection = New HTTPConnection(IP, Port,,,,10);	
	
	Request = New HTTPRequest("/pstprnt"); 		

		Try			
			Stream = New MemoryStream();
			Writer = New TextWriter();
			Writer.Open(Stream,TextEncoding.UTF8,,,False);
			Writer.Write(ZPL);
			Writer.Close();
			
			Headers = New Map();
			Headers.Insert("Content-Type", "text/html;charset=utf-8");
			Headers.Insert("Content-Lenght", Format(Stream.Size(), "NG="));
			
			Stream.Close();
			Request.Headers = Headers;
			Request.SetBodyFromString(ZPL, TextEncoding.UTF8, ИспользованиеByteOrderMark.DontUse);
			Res = Connection.Post(Request);
			If NOT Res.StatusCode = 200 Then
				Message(NStr("ru='Ошибка печати.';en='Print error.'") ); 	
			EndIf;					
		Except
			Message(ErrorDescription());
		EndTry; 	
						
EndProcedure
Показать
8. Monex 17.08.23 13:39 Сейчас в теме
(7) Доброго времени суток. Как можно эмулировать тип MemoryStream(), он же ПотокВПамяти, на платформе 8.3.8, т.к. данный тип появился только в версии 8.3.9. Не очень хочется писать в файл код ZPL и потом его отправлять.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот