Split Print Job to Color and B&W?
cheros writes "I work in an office which has various printers, and printing documents with a few color diagrams in is actually a pain. Due to the high cost of the color prints the preference is to use B&W, and print the color pages separately (with obviously an finishing stage to collate and merge the two). Is there a print filter that would automatically split the PostScript print job into a feed for two different queues? (and yes, we use B&W drawings where possible ;-)."
To answer the question: I have no idea if such a filter exists, sorry. But it's a cool idea.
:(
:) [of course, if you're using a windows print server, you'd better make it a case.]
On the other hand, don't most "modern" color printers (especially the toner-based ones) print b&w almost as cheaply as regular printers? I seem to recall that some Tek wax printers even came with "free black for life" to encourage use of the printer as the primary output device (you'd short-circuit their moneymaking strategy by making sure that only a few pages in the run contain any color).
The only other thing I can think of is to send the whole document to a B&W printer, then only the color pages to the color printer, but then again, that's probably the way you do it already.
If you're working with unix print servers and postscript printers, then I'd think it should be relatively easy to write such a filter. It'd get a bit hairy when you try to do double-sided stuff, as you'd have to track which side you were currently processing and send both sides (where one is color) to the color printer. But it should be reasonable to do, I'd think...
input filter:
- receive pages
- scan page (or pair of pages on a single sheet)
- is color there?
? yes, write this postscript snippet to file A
? no, write the snippet ode to file B
- when done:
- lpr -Pcolor a
- lpr -Pgreyscale b
- lprm self
Or somesuch. Of course, I haven't screwed around with lpd print filters in, oh, 5+ years, so I may be way off base.
My advice: Find a unix geek (preferably a PS-aware perl programmer) and promise them a six-pack of really nice beer if they can solve the problem for you.
good luck!
I have a Xerox XPrint 4920 Plus colour laser printer here, and I see where you're coming from with this question. The thing I'm wondering is why the printer you have doesn't do the job-splitting for you... Colour toners for this bad-boy cost about $350 CDN each (C,M,Y) and the black toner is only about 60-80 bucks CDN. The difference in price (and speed, as B&W prints come out at 12ppm vs. 3ppm for colour) means that I can use this printer for both my colour and black&white needs. Obviously, B&W is higher quantity, and when printing mixed documents, it seems stupid to print through the CMYK process... Well, here's where the printer gets smart -- it doesn't print the pure B&W pictures through the CMYK process. It appears that the printer figures out that it only needs the black toner and just sends the page there. I don't see why you would need to split the actual printers if the printer *should* be doing the splitting for you (and keeping costs down adequately). I guess the particular printer you're using must have a very expensive black toner... NOTE: The XPrint 4920 Plus was introduced in '95 and is by no means a 'new' printer.
one trick that could work would be to add some functions in the postscript header. Basically, overload all color operators so that if they are called, they flag the current page (or better they check if the color or image they are passed is really color). If the flag is present ignore the next showpage operator and flush the graphic state.
Oooh, I like this one. Combine this with what I'd described earlier -- have the input filter add this to the heder, with "ignore==color" and send to the B&W printer, then again with "ignore==b&w" and send to the color printer.
Again, though, I think you're going to depend on having a geeky-geek there to write it for you (and more importantly, fix it when it runs across really weird data that doesn't quite fit right...)
My experience is limited to an HP 4500, but it, at least, prints B&W only pages with only the black toner, noticeably faster than the color pages (one pass, I assume).
The question would have been relevant for color lasers a few years ago, but I think the manufacturers have taken care of this.
Now, if your color device is something painfully slow like a network-attached inkjet, then that's another story.
If you're using PostScript it should be a fairly straightforward PS filter.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
This seems to be for those using their systems, but seems to offer evidence that the idea at least exists out there. Years back when I worked at Xerox, I thought I remembered something in development to balance a job between the B&W DocuTech and a color printer
--
BTW - searching google for split print color b&w popped this up first result.
I have a script which isn't generally appropriate, but it might give you an idea of how to do it. It takes a dvi file and generates a set of postscript files, each contain black and white and colour sections.
See dvicoloursplit.py
(released under the GPL)
It works by generating postscripts for each page, converting to a bitmap, then scanning the bitmap for colour pixels. Not very clever, but works. I tried to examine the postscript itself, but it's very hard to find the colour in a postscript. It can easily be "encoded" in a jpg bitmap, or something else.
..but I cant find the code. How did it work? Well, maybe like this...
Write some postscript that redefines all the colour-setting commands and the colour bitmap commands. The redefined commands set a variable to say this page is colour.
Redefine 'showpage' to only do a real 'showpage' if the 'page-is-colour' variable is set. Clear the variable.
Now rerun, but reverse the logic to do 'showpage' on the mono pages. You can pass the sense of the logic to ghostscript on the command line.
Of course this wont tell you if there is a grey-scale bitmap in a colour image command. You could always redefine the image command to check that all the pixels have the same r,g,b colours....
I'll try and dig the code out.
Baz
We have one of these and I would issue only a cautious recommendation.
In short, if you're looking for a general-purpose, cost-effective printer for PowerPoint slides and printing out web pages to tack on the break-room bulletin board, this might be the printer for you.
If, on the other hand, you're expecting to do any serious proofing, graphics work, etc., then run, don't walk, away as fast as you can.
"Patriotism is your conviction that this country is superior to all other countries because you were born in it." -- GBS