We have forms that utilize a lot of color. Our client is asking that these forms only print in black and white when the form is accessed by the customer. However, the customers have color printers ;-).... Is there a programmatic way to print in grayscale when the customer clicks the print button?
Thanks,
Elaine
Views
Replies
Total Likes
Most print drivers will expose that as an option that the user can select but I do not believe the Acrobat Print Command exposes that in the print call...but I am not a print expert. In the Javascript reference for Acrobat (not Designer) there is a Print Params object where a number of other settings can be used to control the printer. This object can be passed into the Print command. You might find something there that will do the job for you.
Paul
There are prePrint and postPrint events you could use to change the color;
prePrint
this.oldFillColor = this.ui.oneOfChild.border.fill.color.value;
this.ui.oneOfChild.border.fill.color.value = "255,255,255";
postPrint
this.fillColor = this.oldFillColor;
this.oldFillColor = null;
If you have color borders you would have to do a similar thing (changing them to gray);
this.oldFillLinearColor = this.border.fill.resolveNode("#linear").color.value;
this.border.fill.resolveNode("#linear").color.value = "196,196,196";
and
this.border.fill.resolveNode("#linear").color.value = this.oldFillLinearColor;
I tried the prePrint and postPrint code but it turned the form black... I will continue to research.
I also checked out the adobe acrobat javascript reference andit doesn't seem to work in livecycle. For example, this is unknown in LC:
this.getPrintParams();
Any other thoughts or suggestions appreciated!
Thanks!
Elaine
Views
Replies
Total Likes
The "this" keyword in Acrobat refers to the document object. The "this" keyword in XFA Forms refers to the current field. To get to the doc obejct in XFA Forms use event.target. So your command woudl look like this:
event.target.getPrintParams();
Paul
Views
Replies
Total Likes
Well, I have looped through all of the printParams you can get, and I cannot seem to be able to print the form in black and white. I thought this would do the trick, but no luck:
var pp = myDoc.getPrintParams();
pp.colorOverride = pp.constants.colorOverrides.mono; //tried each one of these individually
pp.colorOverride = pp.constants.colorOverrides.gray; //ditto
myDoc.print(pp);
If anyone has any other suggestions, let me know, thanks!
Elaine
Views
Replies
Total Likes
Hi Elaine,
I have a recollection that printParams() was not suported/available in LC Designer. I thought it was restricted to AcroForms. I have looked at the LC 8.2 docs and it indicates that it is supported, but that there isn't a LC equivelent.
I think that you are best going with prePrint / postPrint. Alternatively if the number of colour elements is low, then copy each one directly over the original and set the visibility of the colour objects to "visible screen only" and the greyscale objects to "visible print only".
We had a requirement for a one-page form to appear white on black on the screen, but to print out normally as black on white. We used the second option above.
Not much use. Good luck,
Niall
Views
Replies
Total Likes
Thanks Niall, we did consider duplicating the objects and changing the
visibility on print, ... but that adds increased maintenance and is not a
favored approach. Although I am thinking that's our only option at this
point
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies