コード例 #1
0
ファイル: LetterPrint.py プロジェクト: otobrglez/LetterPrint
    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)
コード例 #2
0
ファイル: LetterPrint.py プロジェクト: otobrglez/LetterPrint
    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)