[python-win32] How to change print copies

Pavel Olifer pavel.olifer at gmail.com
Thu Apr 23 01:10:58 EDT 2020


Good day!

i use your package for changing  printer settings (duplex, copies).
for duplex it is work, but for copies it doesn't.

@source_code
def set_duplex(printer_name):
    # print_defaults = {"DesiredAccess": win32print.PRINTER_ACCESS_ADMINISTER}
    print_defaults = {"DesiredAccess": win32print.PRINTER_ACCESS_USE}
    handle = win32print.OpenPrinter(printer_name, print_defaults)

    level = 2
    attributes = win32print.GetPrinter(handle, level)

    print('Printer= ', printer_name)
    print('Copies= ', win32print.GetPrinter(handle, level)['pDevMode'].Copies)
    print('Duplex= ', win32print.GetPrinter(handle, level)['pDevMode'].Duplex)

    # attributes['pDevMode'].Duplex = 1    # no flip
    attributes['pDevMode'].Duplex = 2    # flip up
    # attributes['pDevMode'].Duplex = 3  # flip over

    attributes['pDevMode'].Copies = 4

    #for key in attributes:
    #    print('{}'.format(key))
    
    #for n in dir(attributes['DevMode']):
    #    print('{} {}'.format(n, getattr(attributes['DevMode'], n)))

    try:
        print('try')
        win32print.SetPrinter(handle, level, attributes, 0)
        print('Copies= ', win32print.GetPrinter(handle, level)['pDevMode'].Copies)
        print('Duplex= ', win32print.GetPrinter(handle, level)['pDevMode'].Duplex)
    except Exception as e:
        print(e)
    win32print.ClosePrinter(handle)


def print_excel(printer_no, path_to_file, duplex='Y', copies=4):
    printer_name = app_config.PRINTER_NAMES[printer_no]

    if duplex == 'Y':
        set_duplex(printer_name=printer_name)

    win32api.ShellExecute(
        1,
        'printto',
        path_to_file,
        '{}'.format(printer_name),
        '.',
        0
    )

if __name__ == '__main__':
    set_duplex(printer_name='\\\\server_name\\printer_name')


if i change and then check (just print) properties changed and document printed on both sides, but only 1 copy, not 4.
may be you know what did i miss ?

My question on stackoverflow: https://stackoverflow.com/questions/58415047/python-win32print-how-to-change-copies <https://stackoverflow.com/questions/58415047/python-win32print-how-to-change-copies>


-- Pavel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20200423/20746c49/attachment.html>


More information about the python-win32 mailing list