Вы описываете основной вариант использования io.TextIOWrapper
: буферизованный текстовый поток поверх двоичного потока.
>>> import io
>>> txt = 'before\N{PILE OF POO}after'
>>> b = io.BytesIO(txt.encode('utf-8'))
>>> t = io.TextIOWrapper(b)
>>> t.read(5)
'befor'
>>> t.read(1)
'e'
>>> t.read(1)
'
Притворство быть цифровым фотоаппаратом и взаимодействие через интерфейс с принтером PictBridge на самом деле звучат довольно умными. Это устранило бы необходимость иметь дело с различными драйверами принтера, и если мое понимание технологии корректно, Вы могли бы даже управлять эксплуатацией принтера прямо от Вашего устройства.
С другой стороны, как кто-то, кто использовал достаточное количество компьютеризированных инструментов лаборатории (осциллографы и т.д.) Я нахожу способность сохранить снимки экрана от Ethernet/веб-интерфейса, чтобы быть намного более полезным. Печать мертва.
Вы посмотрели на то, что делают все поставщики объема? У них всех есть опции печати (я думаю), и я не знаю то, что они делают для решения этой проблемы.
В прошлый раз, когда я был связан с чем-то вроде этого, мы использовали последовательные порты, чтобы говорить с принтерами HP с помощью PCL. Это имело неприятные последствия, поскольку все быстро прекратили делать последовательные принтеры!
PostScript исходно поддерживается большинством принтеров, таким образом, Вы могли просто отправить его по проводу, но это будет намного более громоздким, чем прямой ASCII. Существуют библиотеки, но они являются большими.
Для простого отчета было бы лучше придерживаться прямого ASCII. При необходимости в некоторой графике PCL был бы хорошим выбором для черно-белых лазерных принтеров, но я не уверен, насколько универсальный это было бы для более общих струйных принтеров.
Править: Справочник PCL доступен как PDF от HP.
Так как Ваше устройство, может казаться, карта с интерфейсом USB, простое решение состояло бы в том, чтобы генерировать отчет как изображение JPEG и затем иметь открытый принтер и распечатать его. Таким образом, люди, которые хотят безбумажный вывод, могут использовать изображение как есть, и все остальные могут распечатать его.
Если я понимаю Вас правильно, Вы могли бы записать файл форматированного текста и сделать команду "печати" через Windows в "режиме" палки usb.