Пример #1
0
def printAttr(selPrt):
    #Save the current defauly Printer
    dfltPrt = win32print.GetDefaultPrinter()
    win32print.SetDefaultPrinter(selPrt)
    print('====>> My Current Printer: ', win32print.GetDefaultPrinter())

    handle, level, prtProperties = prepPrinter(selPrt)
    showPtrAttr(prtProperties)
Пример #2
0
 def printPrinter(self):
     import win32print
     from win32ui import CreateDC
     import win32con
     if entryprint.get() == '':
         Str = tkinter.messagebox.askquestion(
             'None', 'Are you sure you want to print an empty character?')
         if Str == True:
             INCH = 1440
             hDC = CreateDC()
             hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
             hDC.StartDoc("Test doc")
             hDC.StartPage()
             hDC.SetMapMode(win32con.MM_TWIPS)
             hDC.DrawText('', (0, INCH * -1, INCH * 8, INCH * -2),
                          win32con.DT_CENTER)
             hDC.EndPage()
             hDC.EndDoc()
         else:
             pass
     elif entryprint.get() == 'Self Text':
         INCH = 1440
         hDC = CreateDC()
         hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
         hDC.StartDoc("Test doc")
         hDC.StartPage()
         hDC.SetMapMode(win32con.MM_TWIPS)
         hDC.DrawText(self.text.get(0.0, END),
                      (0, INCH * -1, INCH * 8, INCH * -2),
                      win32con.DT_CENTER)
         hDC.EndPage()
         hDC.EndDoc()
     else:
         INCH = 1440
         a = entryprint.get().encode('utf-8')
         a = a.decode('utf-8')
         if not (
                 not 'a' and not 'b' and not 'c' and not 'd' and not 'e'
                 and not 'f' and not 'g' and not "h" and not 'i'
         ) or 'j' or 'k' or 'l' or 'm' or 'n' or 'o' or 'p' or 'q' or 'r' or 's' or 't' or 'u' or 'v' or 'w' or 'x' or 'y' or 'z' not in a:
             a = u'{}'.format(a)
         hDC = CreateDC()
         hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
         hDC.StartDoc("Test doc")
         hDC.StartPage()
         hDC.SetMapMode(win32con.MM_TWIPS)
         hDC.DrawText(a, (0, INCH * -1, INCH * 8, INCH * -2),
                      win32con.DT_CENTER)
         hDC.EndPage()
         hDC.EndDoc()
Пример #3
0
def selectPrinter():
    index = 0
    Printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 2)
    print("[Print List]")
    print("Current Printer Name: " + win32print.GetDefaultPrinter())
    print("0. Close")
    for Printer in Printers:
        index += 1
        print(str(index) + ". " + Printer['pPrinterName'])

    number = input("Select Printer Number: ")
    if len(Printers) >= int(number) and int(number) > 0:
        win32print.SetDefaultPrinter(Printers[int(number) - 1]['pPrinterName'])
    print("Setting Printer: " + win32print.GetDefaultPrinter())
    return win32print.GetDefaultPrinter()
Пример #4
0
def code_run():
    user = var.get()
    for i in codes.keys():
        if user == i:
            if codes[user][1] == 0:
                import os
                from time import gmtime, strftime
                time = strftime("%H:%M:%S", gmtime())
                print(time)
                my_file = open("Login.txt", "w")
                name = codes[user][0]
                my_file.write(name)
                my_file.write(" ")
                my_file.write(time)
                my_file.close()
                import tempfile
                import win32api
                import win32print
                file = tempfile.mktemp (".txt")
                win32api.ShellExecute (
                0,
                "printto",
                'Login.txt',
                '"%s"' % win32print.GetDefaultPrinter (),
                ".",
                0
                )
                codes[user][1] = 1
Пример #5
0
def print_file(pdf_file_name, gs='gswin32c'):
    """
	Выводим на принтер pdf-файл
	:param pdf_file_name:
	:return:
	"""
    # GHOSTSCRIPT_PATH = "w:\\#### D\Work\\# python\\tsc_sample\\gsprint\\gsprint.exe"
    # GSPRINT_PATH = "C:\\Program Files (x86)\\gs\\gs9.50\\bin\\gswin32.exe"
    #
    printer_name = win32print.GetDefaultPrinter()
    print(f'printer - [{printer_name}]')

    #
    # #win32api.ShellExecute (0, "print", filename, f'"{win32print.GetDefaultPrinter()}"', ".", 0)
    # win32api.ShellExecute(0, 'open', GSPRINT_PATH, '-ghostscript "'+GHOSTSCRIPT_PATH+'" -printer "'+printer_name+'" "1.pdf"', '.', 0)

    args = gs + '.exe ' \
           '-sDEVICE=mswinpr2 ' \
           '-q ' \
           '-dNOPROMPT -dFitPage ' \
           '-dBATCH ' \
           '-dNOPAUSE ' \
           '-sOutputFile="%printer%{}" '.format(printer_name)
    ghostscript = args + f'"{pdf_file_name}"'
    subprocess.call(ghostscript, shell=True)
    def begin_document(self, desc="MSWinPrint.py print job"):

        # open the printer
        if self.printer is None:
            self.printer = win32print.GetDefaultPrinter()
        self.hprinter = win32print.OpenPrinter(self.printer)

        # load default settings
        devmode = win32print.GetPrinter(self.hprinter, 8)["pDevMode"]

        # change paper size and orientation
        if self.papersize is not None:
            devmode.PaperSize = paper_sizes[self.papersize]
        if self.orientation is not None:
            devmode.Orientation = orientations[self.orientation]

        # create dc using new settings
        self.hdc = win32gui.CreateDC("WINSPOOL", self.printer, devmode)
        self.dc = win32ui.CreateDCFromHandle(self.hdc)

        # self.dc = win32ui.CreateDC()
        # if self.printer is not None:
        #     self.dc.CreatePrinterDC(self.printer)
        # else:
        #     self.dc.CreatePrinterDC()

        self.dc.SetMapMode(win32con.MM_TWIPS)  # hundredths of inches
        self.dc.StartDoc(desc)
        self.pen = win32ui.CreatePen(0, int(scale_factor), 0L)
        self.dc.SelectObject(self.pen)
        self.page = 1
Пример #7
0
def print_png_list(pngList, dirPath, printerName):
    hDC = win32ui.CreateDC()

    for filename in pngList:
        try:
            hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
            printer_size = hDC.GetDeviceCaps(win32con.PHYSICALWIDTH), hDC.GetDeviceCaps(win32con.PHYSICALHEIGHT)
            logging.debug(printer_size)

            bmp = Image.open(dirPath + '/' + filename)
            # if bmp.size[0] < bmp.size[1]:
            #     bmp = bmp.rotate(90)

            hDC.StartDoc(dirPath + '/' + filename)
            hDC.StartPage()

            dib = ImageWin.Dib(bmp)
            labelSize = get_label_size(printerName)
            dib.draw(hDC.GetHandleOutput(), (0, 0, labelSize[0], labelSize[1]))
            hDC.EndPage()

            time.sleep(1)

        except BaseException as e:
            raise e

        finally:
            hDC.EndDoc()
Пример #8
0
def sample_print_string():
    str1 = "Sample Print String"
    hDC = win32ui.CreateDC()
    print(win32print.GetDefaultPrinter())  # test
    hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
    hDC.StartDoc("Test doc")
    hDC.StartPage()
    hDC.SetMapMode(win32con.MM_TWIPS)
    # draws text within a box (assume about 1400 dots per inch for typical HP printer)
    ulc_x = 1000  # give a left margin
    ulc_y = -1000  # give a top margin
    lrc_x = 11500  # width of text area-margin, close to right edge of page
    lrc_y = -15000  # height of text area-margin, close to bottom of the page
    hDC.DrawText(str1, (ulc_x, ulc_y, lrc_x, lrc_y), win32con.DT_LEFT)
    hDC.EndPage()
    hDC.EndDoc()
def printer_watchdog():
    DEFAULT_LOCALE_ENCODING = get_system_encoding()
    print win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL)  # get local printers
    print win32print.EnumPrinters(win32print.PRINTER_ENUM_CONNECTIONS)  # get printers which other computer shared

    default_printer_name = win32print.GetDefaultPrinter()

    printer = win32print.OpenPrinter(default_printer_name)
    print win32print.GetPrinter(printer)

    jobs_list = list()
    total_seconds = 60 * 5  # reset after 60*5 seconds
    sleep_seconds = 10
    times = total_seconds / sleep_seconds
    current_times = 0
    while True:
        jobs = win32print.EnumJobs(printer, 0, 3, 1)
        # 0 is location of first job,
        # 3 is number of jobs to enumerate,
        # 1 is job info level, can be 1(win32print.JOB_INFO_1), 2, 3. 3 is reserved, 1 and 2 can NOT get job status, :(
        if len(jobs) >= 1:
            for job in jobs:
                print job.get('pUserName'), job.get('Submitted'), job.get('pMachineName'), \
                    job.get('pDocument').decode(DEFAULT_LOCALE_ENCODING)
                jobs_list.append(job.get('JobId', -1))
            if any([jid in jobs_list for jid in (jobs[0].get('JobId'), jobs[-1].get('JobId'))]):
                current_times += 1
            if current_times > times:
                print "printer need to be reset, ... "
                reset_printer()
                jobs_list = []  # make sure there are not same job id in list
                current_times = 0
        print 'looks good'
        time.sleep(sleep_seconds)
Пример #10
0
def print_status_update(status, output):
    text1.configure( background="white", foreground="black")
    text1.delete(1.0, END) # clean out the text box first
    text1.insert(tk.END, status)
    
    
    if status == "Printing...":
        # print ('\a\a') # make a sound
        winsound.Beep(600, 400)
        
        # print("before print")

        printer_name = win32print.GetDefaultPrinter()
        out = '/d:"%s"' % (printer_name)
        win32api.ShellExecute(0, "print", output, out, ".", 0)
        # print("after print")

        text1.after(2100, back_to_ready) #this line of code only delay the text1 refresh, the program doesn't have any delay here
        # print("after update text")

        time.sleep(2)
        # print("after sleep")
        # os.startfile(output,"print") # https://stackoverflow.com/questions/12723818/print-to-standard-printer-from-python
       
    else:
        text1.configure( background="yellow", foreground="red")
        winsound.Beep(4000, 800)
Пример #11
0
def impress():
    global nome
    lista = os.listdir()
    # print(lista)
    for i in range(len(lista)):
        # numero = i + 1
        print(i, lista[i])
    selec = input("Qual numero do arquivo desejado:  ")
    if (selec == ""):
        sys.exit()
    selec = int(selec)
    nome = lista[selec]
    arquivo = [nome]
    numero = numpage(arquivo)
    r = input(f"Deseja imprimir um total de {numero} páginas?")
    r = str.upper(r)
    if (r == "S"):
        try:
            arq = open(nome)
            win32api.ShellExecute(0, "print", nome,
                                  '/d:"%s"' % win32print.GetDefaultPrinter(),
                                  ".", 0)

        except:
            print("Erro na impressão, tente novamente")
        return numero
Пример #12
0
def imprimir():
    PHYSICALWIDTH = 110
    PHYSICALHEIGHT = 110

    printer_name = win32print.GetDefaultPrinter()
    file_name = "image.jpg"

    hDC = win32ui.CreateDC()
    hDC.CreatePrinterDC(printer_name)
    printer_size = hDC.GetDeviceCaps(PHYSICALWIDTH), hDC.GetDeviceCaps(
        PHYSICALHEIGHT)

    bmp = Image.open(file_name)
    if bmp.size[0] < bmp.size[1]:
        bmp = bmp.rotate(90)

    hDC.StartDoc(file_name)
    hDC.StartPage()

    dib = ImageWin.Dib(bmp)
    dib.draw(hDC.GetHandleOutput(), (0, 0, printer_size[0], printer_size[1]))

    hDC.EndPage()
    hDC.EndDoc()
    hDC.DeleteDC()
Пример #13
0
def makeprint(loc):
    printer_name = win32print.GetDefaultPrinter()
    hDC = win32ui.CreateDC()
    hDC.CreatePrinterDC(printer_name)
    printable_area = hDC.GetDeviceCaps(0), hDC.GetDeviceCaps(0)
    printer_size = hDC.GetDeviceCaps(0), hDC.GetDeviceCaps(0)
    printer_margins = hDC.GetDeviceCaps(4), hDC.GetDeviceCaps(6)
    file_name = PIL.Image.open(loc)
    ratios = [
        1.0 * printable_area[0] / file_name.size[0],
        1.0 * printable_area[1] / file_name.size[1]
    ]
    scale = min(ratios)
    hDC.StartDoc(loc)
    hDC.StartPage()
    dib = PIL.ImageWin.Dib(file_name)
    scaled_width, scaled_height = [int(scale * i) for i in file_name.size]
    x1 = int((printer_size[0] - scaled_width) / 2)
    y1 = int((printer_size[1] - scaled_height) / 2)
    x2 = x1 + scaled_width
    y2 = y1 + scaled_height
    dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2))
    hDC.EndPage()
    hDC.EndDoc()
    hDC.DeleteDC()
Пример #14
0
def prepPrt2():
    #http://newcenturycomputers.net/projects/pythonicwindowsprinting.html
        
    # if you just want to use the default printer, you need
    # to retrieve its name.
    printer = win32print.GetDefaultPrinter()
    
    # open the printer.
    hprinter = win32print.OpenPrinter(printer)
    
    # retrieve default settings.  this code does not work on
    # win95/98, as GetPrinter does not accept two 
    devmode = win32print.GetPrinter(hprinter, 2)["pDevMode"]
    
    # change paper size and orientation
    # constants are available here:
    # http://msdn.microsoft.com/library/default.asp?
    #      url=/library/en-us/intl/nls_Paper_Sizes.asp
    # number 10 envelope is 20
    devmode.PaperSize = 20
    # 1 = portrait, 2 = landscape
    devmode.Orientation = 2
    
    # create dc using new settings.
    # first get the integer hDC value.  note that we need the name.
    hdc = win32gui.CreateDC("WINSPOOL", printer, devmode)
    # next create a PyCDC from the hDC.
    dc = win32ui.CreateDCFromHandle(hdc)
Пример #15
0
def init_printer():
    name = win32print.GetDefaultPrinter()

    print "printer name: " + name

    # printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_ADMINISTER}
    printdefaults = {"DesiredAccess": win32print.PRINTER_ACCESS_USE}
    handle = win32print.OpenPrinter(name, printdefaults)

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

    print "Old Duplex = %d" % attributes['pDevMode'].Duplex

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

    ## 'SetPrinter' fails because of 'Access is denied.'
    ## But the attribute 'Duplex' is set correctly
    try:
        win32print.SetPrinter(handle, level, attributes, 0)
    except:
        print "win32print.SetPrinter: set 'Duplex'"

    return name, printdefaults, handle, attributes
Пример #16
0
def send_txt(file_path, printer_name):
    default_printer = win32print.GetDefaultPrinter()
    print("---current default printer-----", default_printer)
    win32print.SetDefaultPrinter(printer_name)
    handle = win32print.OpenPrinter(
        printer_name, {"DesiredAccess": win32print.PRINTER_ALL_ACCESS})
    print("---changed default printer-----", win32print.GetDefaultPrinter())
    dict = shell.ShellExecuteEx(fMask=256 + 64,
                                lpVerb='print',
                                lpFile=file_path,
                                lpParameters=printer_name)
    wait = dict["hProcess"]
    win32event.WaitForSingleObject(wait, -1)
    win32print.ClosePrinter(handle)
    win32print.SetDefaultPrinter(default_printer)
    print("---current default printer-----", win32print.GetDefaultPrinter())
Пример #17
0
def sacar_impresion(request, ubig, zon, name, opc):
    lista = []
    # lista.append("Ubigeo: "+str(ubigeo)+" Zona: " +str(zonaq) +" Seccion:  "+ str(seccq)+" y  AEU: "+str(aeut) +"<br/>")

    # cond = Esp_Aeus.objects.filter(ubigeo=ubigeo, zona=zonaq, aeu_final=aeut)

    print "Esta la impresora elegida de opcion: " + str(opc)
    tempprinter = " "
    if opc == 1:
        "Entro a la impresora blanca"
        tempprinter = "\\\\172.18.1.35\\192.168.230.16"
    else:
        print "Entro a la impresora negra"
        tempprinter = "\\\\172.18.1.35\\192.168.230.20"

    print tempprinter
    currentprinter = win32print.GetDefaultPrinter()

    # print "Aqui esta el nombre: " + str(ubig) + name
    source_file_name = "\\\srv-fileserver\\CPV2017\\segm_tab\\urbano\\" + str(
        ubig) + "\\" + str(zon) + "\\" + str(name)
    print source_file_name
    # \\\srv - fileserver\\CPV2017\\list_segm_esp\\" + str(ubigeo) + "\\" + zonal + "\\" + str(ubigeo) + zonal + str(secc) + str(aeu_conv) + ".pdf"

    win32print.SetDefaultPrinter(tempprinter)

    win32api.ShellExecute(0, "print", source_file_name, None, ".", 0)
    win32print.SetDefaultPrinter(currentprinter)

    return HttpResponse(lista)
Пример #18
0
    def setupUI(self):
        """ This is the graphical user interface """
        printers = self.loadPrinters()
        self.val_var = tk.StringVar()
        # This set the default selection in combobox.
        self.val_var.set(printers[0])
        # This set the current printer selected.
        self.cur_printer = printers[0]
        # Get the default printer and save it for restoration purposes.
        self.default_printer = win32print.GetDefaultPrinter()
        self.title_lbl = tk.Label(self,
                                  text="Print to Printer",
                                  font=('Times', 13, 'bold'),
                                  fg='blue')
        self.title_lbl.pack(fill='x', padx=10, pady=10)
        self.combo = ttk.Combobox(self,
                                  textvariable=self.val_var,
                                  values=printers)
        self.combo.pack(fill='x', padx=10, pady=10)
        self.combo.bind("<<ComboboxSelected>>", self.selectPrinter)

        self.print_btn = ttk.Button(self, text='Print', command=self.printFile)
        self.print_btn.pack(side='right', padx=10, pady=10)
        self.cancel_btn = ttk.Button(self,
                                     text='Cancel',
                                     command=self.closeApp)
        self.cancel_btn.pack(side='right', padx=10, pady=10)
def thermalPrinter(base64code):
    
    try:
        raw_str     = str(base64code)
        raw_base    = base64.b64decode(raw_str)
        data        = bytes(raw_base)
        nameprinter = win32print.GetDefaultPrinter()
        
        hPrinter = win32print.OpenPrinter(nameprinter)
        win32print.StartDocPrinter(hPrinter, 1, ("Print data otros pagos", None, "RAW"))

        try:
            win32print.StartPagePrinter(hPrinter)
            win32print.WritePrinter(hPrinter, data)
            win32print.EndPagePrinter(hPrinter)
            win32print.EndDocPrinter(hPrinter)
            win32print.ClosePrinter(hPrinter)

        except Exception as e:

            return jsonify({
                "code":500,
                "message":str(e.message)
            })
    except Exception as e:
        return jsonify({
            "code":500,
            "message":str(e.message)
        })
    return jsonify({
        "code":200,
        "message":"printer!!!"
    })
Пример #20
0
def do_print(file_path):
    printer_name = win32print.GetDefaultPrinter()
    hDC = win32ui.CreateDC()
    hDC.CreatePrinterDC(printer_name)
    printable_area = hDC.GetDeviceCaps(HORZRES), hDC.GetDeviceCaps(VERTRES)
    printer_size = hDC.GetDeviceCaps(PHYSICALWIDTH), hDC.GetDeviceCaps(
        PHYSICALHEIGHT)
    bmp = Image.open(file_path)
    ratios = [
        1.0 * printable_area[0] / bmp.size[0],
        1.0 * printable_area[1] / bmp.size[1]
    ]
    scale = min(ratios)
    hDC.StartDoc(file_path)
    hDC.StartPage()

    dib = ImageWin.Dib(bmp)
    scaled_width, scaled_height = [int(scale * i) for i in bmp.size]
    x1 = int((printer_size[0] - scaled_width) / 2)
    y1 = int((printer_size[1] - scaled_height) / 2)
    x2 = x1 + scaled_width
    y2 = y1 + scaled_height
    dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2))

    hDC.EndPage()
    hDC.EndDoc()
    hDC.DeleteDC()
Пример #21
0
def sample_print_image():
    sampleFileName = './sample_waybill.png'

    hDC = win32ui.CreateDC()
    try:
        hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
        printer_size = hDC.GetDeviceCaps(win32con.PHYSICALWIDTH), hDC.GetDeviceCaps(win32con.PHYSICALHEIGHT)
        logging.debug(printer_size)

        bmp = Image.open(sampleFileName)
        # if bmp.size[0] < bmp.size[1]:
        #     bmp = bmp.rotate(90)

        hDC.StartDoc(sampleFileName)
        hDC.StartPage()

        dib = ImageWin.Dib(bmp)
        # dib.draw(hDC.GetHandleOutput(), (0, 0, printer_size[0] - 100, printer_size[1]))
        dib.draw(hDC.GetHandleOutput(), (0, 0, LabelSize.SF_WIDTH, LabelSize.SF_HEIGHT))

    except BaseException as e:
        raise e

    finally:
        hDC.EndPage()
        hDC.EndDoc()
Пример #22
0
def printer_watchdog():
    print win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL)  # get local printers
    print win32print.EnumPrinters(win32print.PRINTER_ENUM_CONNECTIONS)  # get printers which other computer shared

    default_printer_name = win32print.GetDefaultPrinter()

    printer = win32print.OpenPrinter(default_printer_name)
    print win32print.GetPrinter(printer)

    jobs_list = list()
    total_seconds = 60 * 5  # reset after 60*5 seconds, see 'known issue 2' in this file.
    sleep_seconds = 10
    times = total_seconds / sleep_seconds
    current_times = 0
    while True:
        jobs = win32print.EnumJobs(printer, 0, 3, 1)
        # except: pywintypes.error: (1722, 'EnumJobs', 'RPC 服务器不可用。'), ignored this except
        # 0 is location of first job,
        # 3 is number of jobs to enumerate,
        # 1 is job info level, can be 1(win32print.JOB_INFO_1), 2, 3. 3 is reserved, 1 and 2 can NOT get job status, :(
        if len(jobs) >= 1:
            for job in jobs:
                filename = job.get('pDocument')
                job_id = job.get('JobId', md5(filename).hexdigest())

                job_status = job.get('Status', 0)
                if job_status in [0x00000002, 0x00000004, 0x00000800]:  # JOB_STATUS_ERROR
                    """
                    Refers:
                        https://docs.microsoft.com/en-us/windows/desktop/printdocs/job-info-2
                        ~\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\WinSDK\Include\WinSpool.h
                    """
                    print "printer need to be reset, ... "
                    reset_printer()
                    jobs_list = []  # make sure there are not same job id in list
                    current_times = 0

                print "Current job: ", job_id, job.get('pUserName'), job.get('Submitted'), job.get(
                    'pMachineName'), filename, "[ %d/%d ]" % (times, current_times + 1)
                jobs_list.append(job_id)

            # if any([jid in jobs_list for jid in (jobs[0].get('JobId'), jobs[-1].get('JobId'))]):
            #     current_times += 1
            if Counter(jobs_list).most_common(1)[0][1] > 1:
                current_times += 1

            if current_times > times:
                """ KNOWN ISSUE 2:
                It will reset when a document sends lots of pages to printer. 
                This script may reset printer before job finished which is not expected.  
                """
                print "printer need to be reset, ... "
                reset_printer()
                jobs_list = []  # make sure there are not same job id in list
                current_times = 0
        else:
            jobs_list = []
            current_times = 0
            print 'looks good, keep watching ...'
        time.sleep(sleep_seconds)
Пример #23
0
def printer(raw_data):
    default_printer = win32print.GetDefaultPrinter()
    h = win32print.OpenPrinter(default_printer)
    win32print.StartDocPrinter(h, 1, ("", "", "RAW"))
    win32print.WritePrinter(h, raw_data)
    win32print.EndDocPrinter(h)
    win32print.ClosePrinter(h)
Пример #24
0
def makeprint(loc):
    print('Printer Connection: Complete')
    printer_name = win32print.GetDefaultPrinter()
    hDC = win32ui.CreateDC()
    hDC.CreatePrinterDC(printer_name)
    scales = 1024, 1024, 820, 733
    printable_area = scales[0], scales[1]
    printer_size = scales[1], scales[0]
    printer_margins = scales[0] - scales[2], scales[1] - scales[3]
    for i in range(1, 3):
        print('Printing in {0} secs'.format((0 - i) * (-1)))
        sleep(i)
    file_name = PIL.Image.open(loc)
    ratios = [
        1.0 * printable_area[0] / file_name.size[0],
        1.0 * printable_area[1] / file_name.size[1]
    ]
    scale = min(ratios)
    hDC.StartDoc(loc)
    hDC.StartPage()
    dib = PIL.ImageWin.Dib(file_name)
    scaled_width, scaled_height = [int(scale * i) for i in file_name.size]
    x1 = int((printer_size[0] - scaled_width) / 2)
    y1 = int((printer_size[1] - scaled_height) / 2)
    x2 = x1 + scaled_width
    y2 = y1 + scaled_height
    dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2))
    hDC.EndPage()
    hDC.EndDoc()
    hDC.DeleteDC()
    print('Printed .')
Пример #25
0
def printFile(filename):
    import tempfile
    import win32api
    import win32print
    open(filename, "r")
    win32api.ShellExecute(0, "print", filename,
                          '/d:"%s"' % win32print.GetDefaultPrinter(), ".", 0)
Пример #26
0
    def printer1(self, img):  #调用打印机,请事先把默认打印机,纸张格式等参数从电脑上调好
        print('start print ' + img)
        printer_name = win32print.GetDefaultPrinter()
        #
        # raw_data could equally be raw PCL/PS read from
        #  some print-to-file operation
        #
        if sys.version_info >= (3, ):
            raw_data = bytes(a, "utf-8")
        else:
            raw_data = "This is a test"

        hPrinter = win32print.OpenPrinter(printer_name)
        try:
            hJob = win32print.StartDocPrinter(hPrinter, 1, (img, None, "RAW"))
            print('here1' + img)
            try:
                win32print.StartPagePrinter(hPrinter)
                win32print.WritePrinter(hPrinter, raw_data)
                win32print.EndPagePrinter(hPrinter)
                print('here2')
            finally:
                win32print.EndDocPrinter(hPrinter)
                print('here3')
        finally:
            win32print.ClosePrinter(hPrinter)
            print('here4')
Пример #27
0
    def __init__(self, printer_name):
        self.printer_name = printer_name

        # Set printer
        logger.info("正在设置默认打印机为: %s" % self.printer_name)
        win32print.SetDefaultPrinter(self.printer_name)
        self.printer = win32print.GetDefaultPrinter()
Пример #28
0
def printTest():
    source_file_name = "c:/temp/temp.txt"
    pdf_file_name = tempfile.mktemp(".pdf")

    styles = getSampleStyleSheet()
    h1 = styles["h1"]
    normal = styles["Normal"]

    doc = SimpleDocTemplate(pdf_file_name)
    #
    # reportlab expects to see XML-compliant
    #  data; need to escape ampersands &c.
    #
    text = cgi.escape(open(source_file_name).read()).splitlines()

    #
    # Take the first line of the document as a
    #  header; the rest are treated as body text.
    #
    story = [Paragraph(text[0], h1)]
    for line in text[1:]:
        story.append(Paragraph(line, normal))
        story.append(Spacer(1, 0.2 * inch))

    doc.build(story)
    win32api.ShellExecute(
        0,
        "print",
        pdf_file_name,
        '/d:"%s"' % win32print.GetDefaultPrinter(),
        ".",
        1

    )
Пример #29
0
 def __init__(self, printer_name=None, *args, **kwargs):
     Escpos.__init__(self, *args, **kwargs)
     if printer_name is not None:
         self.printer_name = printer_name
     else:
         self.printer_name = win32print.GetDefaultPrinter()
     self.hPrinter = None
Пример #30
0
def printer_pic(file_name):
    # 物理宽度、高度
    PHYSICALWIDTH = 110
    PHYSICALHEIGHT = 111
    # 物理偏移位置
    PHYSICALOFFSETX = 0
    PHYSICALOFFSETY = 0
    printer_name = win32print.GetDefaultPrinter()
    printer_name = 'Microsoft Print to PDF'
    hDC = win32ui.CreateDC()
    hDC.CreatePrinterDC(printer_name)
    printer_size = hDC.GetDeviceCaps(PHYSICALWIDTH), hDC.GetDeviceCaps(
        PHYSICALHEIGHT)
    bmp = Image.open(file_name)
    if (bmp.size[0] > bmp.size[1]):
        #print('rotate...')
        #print(bmp.size)
        bmp = bmp.transpose(Image.ROTATE_90)
        #bmp.show()
        print(bmp.size)

    hDC.StartDoc(file_name)
    hDC.StartPage()
    dib = ImageWin.Dib(bmp)

    dib.draw(hDC.GetHandleOutput(), (0, 0, 4961, 7016))

    hDC.EndPage()
    hDC.EndDoc()
    hDC.DeleteDC()