add win32.send_data_to_printer() function

This commit is contained in:
Lance Edgar 2012-05-11 09:01:04 -07:00
parent 33cf50c4cb
commit 51a0a490ea
3 changed files with 29 additions and 0 deletions

6
docs/edbob.win32.rst Normal file
View file

@ -0,0 +1,6 @@
:mod:`edbob.win32`
==================
.. automodule:: edbob.win32
:members:

View file

@ -27,6 +27,7 @@ The following pages describe the ``edbob`` package from a caller's perspective.
edbob.modules edbob.modules
edbob.sqlalchemy edbob.sqlalchemy
edbob.util edbob.util
edbob.win32
To-Do To-Do

View file

@ -33,6 +33,7 @@ if sys.platform == 'win32': # docs should build for everyone
import pywintypes import pywintypes
import win32file import win32file
import winerror import winerror
import win32print
def RegDeleteTree(key, subkey): def RegDeleteTree(key, subkey):
@ -106,3 +107,24 @@ def file_is_free(path):
finally: finally:
if handle: if handle:
win32file.CloseHandle(handle) win32file.CloseHandle(handle)
def send_data_to_printer(data, printer_name, job_name):
"""
Create and submit a new print job (named ``job_name``) which sends ``data``
directly to the Windows printer identified by ``printer_name``. Returns
the number of bytes actually written to the printer port.
This is designed for sending command strings to Zebra label printers, but
could potentially be useful for other situations as well.
"""
printer = win32print.OpenPrinter(printer_name)
assert printer
assert win32print.StartDocPrinter(printer, 1, (job_name, None, None))
win32print.StartPagePrinter(printer)
num_bytes = win32print.WritePrinter(printer, data)
win32print.EndPagePrinter(printer)
win32print.EndDocPrinter(printer)
win32print.ClosePrinter(printer)
return num_bytes