r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Printing]

BrianH
4-Sep-2008
[41]
It wouldn't be the wrapping of the Windows API that would help Linux 
users, it would be his initial work on making a Draw-like printing 
dialect. Defining the dialect is a large part of the process of supporting 
printing in REBOL. There will be non-Windows-specific parts of Doc's 
implementation that can be adapted to a general printing model for 
REBOL, one that can have multiple implementations with different 
backends. For that matter, there would need to be at least 3 backends: 
GDI (for Windows), Postscript (for Ghostscript) and PDF (for Mac 
Quartz), with a possible XPS backend as a minor variation on the 
PDF one.
Kaj
7-Sep-2008
[42x2]
So would or wouldn't you advise to go through PDF for printing to 
GhostScript?
I'm very interested in this for both REBOL and Syllable
Dockimbel
8-Sep-2008
[44x12]
First test release of Printer scheme for direct printing on Windows 
platforms : http://softinnov.org/tmp/printer.zip
No docs for now, look at the sample %test-page.r script and at the 
scheme implementation. Input dialect is a subset of Draw dialect.
There's still some glitches and it needs some fine-tuning before 
providing real WYSIWYG results when compared to Draw rendering.
Draw dialect maps very well with Windows drawing API (GDI). It's, 
in most cases, a one to one mapping.
But Draw dialect is really too level for a daily use. A higher level 
dialect with relative positionning and higher level constructs (e.g. 
tables support), like VID or HTML is needed.
I highly recommand the excellent Bullzip free PDF Printer for testing 
: http://www.bullzip.com/download/pdf/BullzipPDFPrinter_5_0_0_609.zip
Example of multiples pages printing :
p: open printer://
insert p 'start-doc

insert p 'start-page
insert p [text "Page 1" 50x50]
insert p 'end-page

insert p 'start-page
insert p [text "Page 2" 50x50]
insert p 'end-page
...
insert p 'end-doc	;-- this one triggers the real printing
close p
Btw, the printer dialect use milimeters as unit for positioning and 
size.
Possible additionnal features :


- Support for preview View window is possible, but requires some 
fine tuning first in Printer scheme, for WYSIWYG support. 


- Support for Windows standard printer dialog window could be added.


- Support for setting page orientation, page copies, etc...could 
be added.
I don't think that I will have time to add all those features, so 
it's left as an exercice for the community ;-).
Last but not least, the usual one-liner : write printer:// [text 
10x10 "Hello World!"] ;-)
Gregg
8-Sep-2008
[56]
Awesome Doc! I thought I had forever gotten away from start-doc/end-doc, 
but I guess old APIs never die. :-)
Graham
9-Sep-2008
[57]
Fantastic!
Dockimbel
9-Sep-2008
[58]
Gregg: I must admit that I missed the good old VB printer object. 
So now, who wants to clone Crystal Reports ? ;-)
Henrik
9-Sep-2008
[59]
I'm unable to test it here, but what about bringing up the printer 
dialog? Does that happen?
Dockimbel
9-Sep-2008
[60x2]
Not currently, but it could be added.
Btw, it's possible to list the available printers using : probe printer/enum
Pavel
9-Sep-2008
[62]
It must be said clearly YOU ARE THE GREAT! thx for this all
Dockimbel
9-Sep-2008
[63]
Thanks but this isn't really such a great piece of code (Windows 
API is doing the real job), even if it fills a gap in REBOL (at least 
for Windows). Btw, in my company, we're using Gab's pdf-maker for 
years now to generate and print all our documents. I made this library 
only because I needed a direct printing solution for a customer and 
I must admit it was a fun work to do.
Pavel
9-Sep-2008
[64]
But this is the merit, everybody could do it (OK almost everybody, 
not me for example), but you did it.  Printing points up dual problem, 
first it is definitely against Cross-platformity, but second if anybody 
intents to work seriously (make real aplications) definitely need 
it.
Dockimbel
9-Sep-2008
[65]
I've looked at the cross-platform aspects of printing. I think that 
it could be possible to add support for PS and PDF generators for 
Unix and OSX printing support. So we could have the same dialect 
to draw on screen and on printers (on all majors platforms).
Henrik
9-Sep-2008
[66x2]
I wish I could integrate this with my own printing system, but it's 
highly postscript oriented.
mine focuses more on the UI side, offering various methods of printing 
postscript. there is also a printer queue system as well as a printer 
server.
Gregg
9-Sep-2008
[68]
who wants to clone Crystal Reports ?
  

We would need a /bloat refinement to do that. :-)
Louis
9-Sep-2008
[69]
http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=crystal-reports.r
Dockimbel
13-Sep-2008
[70x2]
For information, I've successfully tested direct printing in Linux 
and OS X using PostScript format documents and CUPS as backend. I'm 
currently trying to implement a Draw dialect compiler targeting PS. 
Unix and OS X support wasn't needed for my project, but I couldn't 
resist to give it a try ;-).
I know that Geomol has built a PS lib but, unfortunately, it doesn't 
take Draw dialect as input.
Henrik
13-Sep-2008
[72]
now it's getting really interesting :-)
Dockimbel
13-Sep-2008
[73x3]
;-)
le blog de Billaut  : http://billaut.typepad.com/
(oops sorry, wrong window, please ignore my last post)
Henrik
13-Sep-2008
[76]
did you solve the center/right adjustment problem?
Dockimbel
13-Sep-2008
[77]
R2 kerning issue with Draw that you were talking about ?
Henrik
13-Sep-2008
[78]
yes
Dockimbel
13-Sep-2008
[79]
It's out of my scope currently, I didn't yet worked on the (cross-platform) 
preview window (where Draw engine will be used).
Henrik
13-Sep-2008
[80]
ok
Dockimbel
13-Sep-2008
[81]
If Draw has really some issue with kerning, I can't see how we can 
fix that in R2. We'll have to live with an almost-WYSIWYG model. 
If R2 was open-sourced, that would be, of course, different. ;-)
Pekr
13-Sep-2008
[82]
... or ... we can ask Cyphre to fix it? :-)
Dockimbel
13-Sep-2008
[83]
Sure, if he has access to that part of the source code. Henrik, did 
you made a RAMBO ticket for that issue ?
Henrik
13-Sep-2008
[84x2]
no, I stopped spending time on it almost immediately after learning 
of this problem.
the idea was to use size-text to produce the needed position, but 
the result is not usable, because I don't think DRAW uses the concept 
of a bounding box for text.
Dockimbel
16-Sep-2008
[86x3]
Update on the work-in-progress : http://softinnov.org/tmp/test-page.zip


Both files are printed from the same Draw dialect source, using my 
printer:// scheme. The PDF file is printed through Bullzip PDF Virtual 
printer. The PS file is directly generated by the printer scheme 
(for UNIX/Cups direct printing).


Most of the PostScript support is done (see %test-page.ps), but there's 
still a lot of details to enhance/fix/add: 

o Add center/right alignement support

o Add underline style for fonts

o Fine-tune positionning and bold level.

o Fix minor differences with the GDI version.
To view the PS file, use ghostscript / gsview.
Scaling, auto-fit are also currently missing in the PS version. Landscape 
mode is also missing in both GDI and PS modes.
Graham
16-Sep-2008
[89x2]
don't bother with underline style!  It's a relic of type setting.
There are a few good justifications schemes available for postscript