Печать на стандартный принтер с Python?

есть ли разумно стандартный и кросс-платформенный способ печати текста (или даже PS/PDF) на системном принтере?

предполагая, что CPython здесь, не что-то умное, как использование Jython и API печати Java.

4 ответов


к сожалению, нет стандартного способа печати с использованием Python на всех платформах. Поэтому вам нужно будет написать свою собственную функцию обертки для печати.

вам нужно обнаружение ОС ваша программа работает, а затем:

Для Linux -

import subprocess
lpr =  subprocess.Popen("/usr/bin/lpr", stdin=subprocess.PIPE)
lpr.stdin.write(your_data_here)

Для Windows:http://timgolden.me.uk/python/win32_how_do_i/print.html

больше ресурсов:

печать PDF-документа с помощью win32print python модуль?

как печатать на принтере ОС по умолчанию в Python 3 (кросс-платформенный)?


это было протестировано только на Windows:

Вы можете сделать следующее:

import os

os.startfile("C:/Users/TestFile.txt", "print")

это запустит файл, в открывателе по умолчанию, с глаголом "печать", который будет печатать на принтер по умолчанию.Требуется только os модуль, который поставляется со стандартной библиотекой


для печати на любом принтере в сети вы можете отправить задание печати PJL/PCL непосредственно на сетевой принтер на порту 9100.

пожалуйста, посмотрите на ссылку ниже, которая должна дать хорошее начало:

http://frank.zinepal.com/printing-directly-to-a-network-printer

кроме того, если есть способ вызвать Windows cmd, вы можете использовать FTP put для печати страницы на 9100. Ниже ссылка должна дать вам подробную информацию, я использовал этот метод для принтеров HP, но Я считаю, что это будет работать для других принтеров.

http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=bpj06165


вы можете попробовать библиотеку wx. Это кросс-платформенная библиотека пользовательского интерфейса. Здесь вы можете найти учебник по печати: http://wiki.wxpython.org/Printing