def draw(self, ctx): dpi = 96 nastavitve = ET.ElementTree(file=self._nastavitve).getroot() odmik_desni = int(nastavitve.find("odmiki/odmik_od_desnega_roba").text) odmik_levi = int(nastavitve.find("odmiki/odmik_od_levega_roba").text) visina = int(nastavitve.find("kuverte/visina").text) sirina = int(nastavitve.find("kuverte/sirina").text) velikost_mm = (sirina, visina) pisava_x = nastavitve.find("pisava").text spl = pisava_x.split(" ") pisava_size = font_size_to_pixel(int(spl[len(spl) - 1]), dpi) if pisava_x.rfind(",") != -1: pisava = pisava_x[0:pisava_x.rfind(",")] else: pisava = pisava_x[0:pisava_x.rfind(" ")] velikost_pix = (mm_to_pixel(velikost_mm[0], dpi), mm_to_pixel(velikost_mm[1], dpi)) odmik_desno = mm_to_pixel(odmik_desni, dpi) odmik_spodaj = mm_to_pixel(odmik_levi, dpi) razmik_vrstice = mm_to_pixel(2, dpi) bes = self.u_data["m_naziv"] + " " + self.u_data[ "m_ime"] + "\n" + self.u_data[ "m_naslov"] + "\n" + "\n" + self.u_data["m_posta"] if self.u_data["m_drzava"] != "": bes + "\n" + self.u_data["m_drzava"] p = Printer() ctx.translate(self.rp_sirina / 2, self.rp_visina / 2) ctx.rotate(self.rotacija * (3.14 / 180)) ctx.translate(-(self.rp_sirina / 2), -(self.rp_visina / 2)) ctx.translate( (self.rp_sirina - (velikost_pix[0] * self.zoom_faktor)) / 2, (self.rp_visina - (velikost_pix[1] * self.zoom_faktor)) / 2) ctx.scale(self.zoom_faktor, self.zoom_faktor) ims = p.narediPNGKuverto(besedilo=bes, pisava=pisava, velikost_pisave=pisava_size, visina=velikost_pix[1], sirina=velikost_pix[0], odmik_desno=odmik_desno, odmik_spodaj=odmik_spodaj, razmik_vrstice=razmik_vrstice, show_crte=self.kuv_show_crte, ctx_p=ctx)
def on_gumbNatisni_clicked(self, p): if self.tiskalnik == None: self.tiskalnik = win32print.GetDefaultPrinter() p = win32print.OpenPrinter(self.tiskalnik) t = (win32print.GetPrinter(p, 2)["pDevMode"]) dpi = int(t.PrintQuality) if VERBOSE_NACIN: print "Pripravljam sliko za tiskalnik : " + self.tiskalnik nastavitve = ET.ElementTree(file=self._nastavitve).getroot() odmik_desni = int(nastavitve.find("odmiki/odmik_od_desnega_roba").text) odmik_levi = int(nastavitve.find("odmiki/odmik_od_levega_roba").text) visina = int(nastavitve.find("kuverte/visina").text) sirina = int(nastavitve.find("kuverte/sirina").text) velikost_mm = (sirina, visina) pisava_x = nastavitve.find("pisava").text spl = pisava_x.split(" ") pisava_size = font_size_to_pixel(int(spl[len(spl) - 1]), dpi) if pisava_x.rfind(",") != -1: pisava = pisava_x[0:pisava_x.rfind(",")] else: pisava = pisava_x[0:pisava_x.rfind(" ")] velikost_pix = (mm_to_pixel(velikost_mm[0], dpi), mm_to_pixel(velikost_mm[1], dpi)) odmik_desno = mm_to_pixel(odmik_desni, dpi) odmik_spodaj = mm_to_pixel(odmik_levi, dpi) razmik_vrstice = mm_to_pixel(2, dpi) # Priprava besedila p = Printer() u_datalist = [] if self.tiskanje_izbora: print "Tiskanje izbora..." inc = 0 for px in self.seznamUporabnikov: if px[5] == True: pom = {} for inc in range(0, len(self._kljuci)): if self._kljuci[inc] != None: po = self._kljuci[inc] pom[po] = px[inc] pom["pot"] = self.nakljucna_pot() u_datalist.append(pom) if not self.tiskanje_izbora: bes = self.u_data["m_naziv"] + " " + self.u_data[ "m_ime"] + "\n" + self.u_data[ "m_naslov"] + "\n" + "\n" + self.u_data["m_posta"] if self.u_data["m_drzava"] != "": bes + "\n" + self.u_data["m_drzava"] ims = p.narediPNGKuverto(besedilo=bes, pisava=pisava, velikost_pisave=pisava_size, visina=velikost_pix[1], sirina=velikost_pix[0], odmik_desno=odmik_desno, odmik_spodaj=odmik_spodaj, razmik_vrstice=razmik_vrstice, show_crte=self.kuv_show_crte) file_name = self.nakljucna_pot() if VERBOSE_NACIN: print "Shranjujem sliko na lokacijo : " + file_name ims.write_to_png(file_name) else: #tiskanje izobra for pa in u_datalist: bes = pa["m_naziv"] + " " + pa["m_ime"] + "\n" + pa[ "m_naslov"] + "\n" + "\n" + pa["m_posta"] if pa["m_drzava"] != "": bes + "\n" + pa["m_drzava"] ims = p.narediPNGKuverto(besedilo=bes, pisava=pisava, velikost_pisave=pisava_size, visina=velikost_pix[1], sirina=velikost_pix[0], odmik_desno=odmik_desno, odmik_spodaj=odmik_spodaj, razmik_vrstice=razmik_vrstice, show_crte=self.kuv_show_crte) if VERBOSE_NACIN: print "Pisem sliko : " + pa["pot"] ims.write_to_png(pa["pot"]) hDC = win32ui.CreateDC() hDC.CreatePrinterDC(self.tiskalnik) PHYSICALWIDTH = 110 PHYSICALHEIGHT = 111 PHYSICALOFFSETX = PHYSICALWIDTH + 2 PHYSICALOFFSETY = PHYSICALHEIGHT + 2 LOGPIXELSX = 88 LOGPIXELSY = 90 HORZRES = 8 VERTRES = 10 printable_area = hDC.GetDeviceCaps(HORZRES), hDC.GetDeviceCaps(VERTRES) printer_size = hDC.GetDeviceCaps(PHYSICALWIDTH), hDC.GetDeviceCaps( PHYSICALHEIGHT) printer_margins = hDC.GetDeviceCaps( PHYSICALOFFSETX), hDC.GetDeviceCaps(PHYSICALOFFSETY) hDC.StartDoc("Tiskanje nabora slik") if not self.tiskanje_izbora: bmp = Image.open(file_name) if self.rotacija != 0: bmp = bmp.rotate(self.rotacija) hDC.StartPage() dib = ImageWin.Dib(bmp) desna_poravnava = not False negativni_odmik = False odm_levo = 0 if desna_poravnava: odm_levo = (printer_size[0] - bmp.size[0]) x1 = (-1) * int(printer_margins[0]) + odm_levo y1 = (-1) * int((printer_size[1] - printable_area[1]) / 2) x2 = bmp.size[0] + (-1) * int( (printer_size[0] - printable_area[0]) / 2) + odm_levo y2 = bmp.size[1] + (-1) * int( (printer_size[1] - printable_area[1]) / 2) dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2)) hDC.EndPage() else: for slika in u_datalist: bmp = Image.open(slika["pot"]) if self.rotacija != 0: bmp = bmp.rotate(self.rotacija) hDC.StartPage() dib = ImageWin.Dib(bmp) desna_poravnava = not False negativni_odmik = False odm_levo = 0 if desna_poravnava: odm_levo = (printer_size[0] - bmp.size[0]) x1 = (-1) * int(printer_margins[0]) + odm_levo y1 = (-1) * int((printer_size[1] - printable_area[1]) / 2) x2 = bmp.size[0] + (-1) * int( (printer_size[0] - printable_area[0]) / 2) + odm_levo y2 = bmp.size[1] + (-1) * int( (printer_size[1] - printable_area[1]) / 2) dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2)) hDC.EndPage() hDC.EndDoc() hDC.DeleteDC() if VERBOSE_NACIN: print "Konec posiljanja slike v tiskalnik... " if VERBOSE_NACIN: print "Brisanje slik iz temp!" # Brisanje slik iz temp! if self.tiskanje_izbora: for slike in u_datalist: print "Brisem : " + slike["pot"] os.unlink(slike["pot"]) else: print "Brisem : " + file_name os.unlink(file_name)