Printing a text over an image

  • Thread starter Martha Morrigan
  • Start date
M

Martha Morrigan

Hi guys,

Using python, wxpython and sqlite in a windows system, Im trying to
print some certificates/diplomas/cards with a image at background with
the name of person/text over it.

I know the basic steps to print the text using win32print from Pywin32
but...:

1) I dont know how to add an image and set it to background.

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

This printer-code is inside a while loop calling each people name from
a sqlite database per check condition.


2) All the names of database was printed at same page... how i command
the printer to spit out 1 page per name from the database?


3) Any more simple approach or module to deals with printers (paper
and/or pdf) will be welcome.

Thanks in advance,

Martha
 
L

Laurent Pointal

Martha said:
3) Any more simple approach or module to deals with printers (paper
and/or pdf) will be welcome.

For pdf, you can take a look at ReportLab's Toolkit. I used it to build a
"trombinoscope" (ie an employee directory with each member's photo on top of
his name and room number).

http://www.reportlab.com/software/opensource/

Once created the pdf, you must find a solution to send it to the printer...
Thanks in advance,

Martha

A+
Laurent.
 
M

Marco Nawijn

Hi guys,



Using python, wxpython and sqlite in a windows system, Im trying to

print some certificates/diplomas/cards with a image at background with

the name of person/text over it.



I know the basic steps to print the text using win32print from Pywin32

but...:



1) I dont know how to add an image and set it to background.



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



This printer-code is inside a while loop calling each people name from

a sqlite database per check condition.





2) All the names of database was printed at same page... how i command

the printer to spit out 1 page per name from the database?





3) Any more simple approach or module to deals with printers (paper

and/or pdf) will be welcome.



Thanks in advance,



Martha

Hi Martha,

Since you are on windows, why don't you use MS/Word directly from Python. It has all the abstractions you need (documents, pages, tables, figures, printing etc.). Working with MS/Word through the win32 bindings is really simple.
I have done this a while ago for some automatic report generation. The basic routine is to start recording your actions with the MS/Word macro recorder, do the things you want to do, stop recording, look at the VB code and guess the equivalent Python code. This is not as bad as it sounds. It normally is really straightforward.

I am on Linux at the moment, so I cannot present any code examples. Feel free to try and post some example code if you get stuck.

Marco
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top