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

    このプリンター コードは、チェック条件ごとに sqlite データベースから各人の名前を呼び出す while ループ内にあります。

  2. データベースのすべての名前が同じページに印刷されました。データベースから名前ごとに 1 ページを吐き出すようにプリンターに指示するにはどうすればよいですか?

  3. プリンター (紙および/または pdf) を処理するためのより単純なアプローチまたはモジュールを歓迎します。

4

2 に答える 2

2

WxPythonで実現できると思いますが、私はあなたを助けるのに十分なことを知りません。

ただし、 PythonImageLibraryを調べてみることができます。

サンプルコード:

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

代わりに、reportlabを使用して PDF を作成し、その PDF を gsprint を使用してプリンターに送信することをお勧めします。

この回答を参照してください: https://stackoverflow.com/a/4498956/3571

于 2012-11-08T12:04:35.683 に答える