[Gambas-user] PRINTER

Leonardo Miliani leonardo at ...1237...
Fri Mar 9 18:36:28 CET 2007


David Villalobos Cambronero ha scritto:
> Hi, I´m new in Gambas, beside, I´m from Costa Rica and my english is not good at all, but my question is, does somebody know if there is another way to create/print database reports whitout have to create and html file.
> 
> Regards,
> 
> David Villalobos.

I've used the printing functions a lot because a project of mine needed
to create several documents.
You have to use the draw method, creating your document as an image
(with line, squares, and textlines) and then print it.

So, your code could be like this:
PRIVATE SUB Print_Text(Text_Report as string)

  'this is needed to let the user to choose the printer
  IF Printer.SetUp() = TRUE THEN
    RETURN  'the user clicked on the Cancel button
  END IF
  'but you could do using the code below
  'Printer.Name = ""  <-- here you can put the system printer name
  Printer.Copies = Number_of_copies
  'don't select the number of copies from the Setup panel
  'because it is an unsupported feature

  Draw.Begin(Printer) 'you just begin creating your page
  'i.e. you can create a squared text
  Draw.Rect (500,500,1000,1000)
  Draw.Text (Text_Report,600,600)
  Draw.End 'this command closes the document and prints it

END

But I can tell you some extra words....
I'm unhappy to say that the printing functions don't work very well
under my system (Suse 10.2): I don't know if this is a problem of the
system or a bug in Gambas but in my program I needed to print some
copies of a document and a lot of times I didn't get any result using
the above procedure... I saw that a document was created but a lot of
times it contained no pages.... Very very strange...
So I solved in this way:
- I first choosed a file name, then I set up the document using the code
Printer.Copies = xxx
Printer.Name = ""   'tell the component to not use a real printer
Printer.File = name_of_file 'so Gambas created for me a PostScript document
Draw.Begin(Printer)
....
....
....
Draw.End

At the end of this process, I printed the document using this method:
hPrint = SHELL ("lpr " & Application.Path & "/name_file.ps") WAIT
or, if I needed a video preview before:
hPrint = SHELL ("kghostview " & Application.Path & "/namefile.ps" & " &")

(hPrint is a Process declared with DIM hPrint as PROCESS)


-- 
Ciao.
Leo.

Web: www.leonardomiliani.com
E-mail: leonardo at ...1237...
Scegli software opensource - Choose opensource software




More information about the User mailing list