4

在 windows 系统中使用 python、wxpython 和 sqlite。我正在尝试打印一些证书/文凭/卡片,背景中有图像,上面有人名/文本。

我知道使用 Pywin32 中的 win32print 打印文本的基本步骤,但是:

  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)。

4

2 回答 2

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")

结果:

在此处输入图像描述

于 2012-11-08T10:53:27.080 回答
0

I suggest you instead use reportlab to create a PDF and then send that PDF to a printer using gsprint.

See this answer: https://stackoverflow.com/a/4498956/3571

于 2012-11-08T12:04:35.683 回答