2012-11-08 90 views
4

在Windows系統中使用python,wxpython和sqlite。我試圖在背景中打印一些帶有圖像的證書/文憑/卡片以及其上的人物/文字的名稱。發送給打印機python中的圖像上的文本

我知道的基本步驟使用win32print從Pywin32打印文本,但:

  1. 我不知道如何添加圖像並將其設置爲背景。

    while ..... 
    
        ..... 
    
        # Query sqlite rows and collumn name and set the self.text for each certificate 
    
        ..... 
    
        # Now send to printer 
    
        DC = win32ui.CreateDC() 
        DC.CreatePrinterDC(win32print.GetDefaultPrinter()) 
    
        DC.SetMapMode(win32con.MM_TWIPS) 
    
        DC.StartDoc("Certificates Job") 
    
        DC.StartPage() 
    
        ux = 1000 
        uy = -1000 
        lx = 5500 
        ly = -55000 
    
        DC.DrawText(self.text, (ux, uy, lx, ly),win32con.DT_LEFT) 
    
        DC.EndPage() 
        DC.EndDoc() 
    

    這個打印機代碼是在一個while循環內調用sqlite數據庫每個檢查條件的每個人的名字。

  2. 數據庫的所有名稱都打印在同一頁上。如何命令打印機從數據庫中爲每個名稱吐出1頁?

  3. 一個更簡單的方法或模塊來處理打印機(紙和/或pdf)將受到歡迎。

回答

2

我認爲這對WxPython是可行的,但我不知道足以幫助你。

但是,你可以嘗試看看到Python Image Library

示例代碼:

import sys 
from PIL import Image,ImageDraw 

txt = 'C\'est mon texte!' 
txt2 = '??,??!' 


im = Image.new("RGBA",(300,200),(100,155,100)) 

draw = ImageDraw.Draw(im) 

draw.text((0,50), txt) 
draw.text((0,100), txt2) 
del draw 

im.save('font.png', "PNG") 

和結果:

enter image description here

+0

赫姆...我看到現在如何把一個文本在圖像。但如何將其發送到默認打印機?以及如何提高分辨率/質量? –

0

我建議你改用reportlab來創建PDF,然後使用gsprint將該PDF發送到打印機。

看到這個答案:https://stackoverflow.com/a/4498956/3571

+0

對不起。不......我不想或不認爲我需要使用任何外部EXE文件。如果情況很簡單,只需將默認打印機設置爲primopdf或其他任何虛擬pdfprinter即可。 –

相關問題