I am looking into a way to manipulate the data sent to a printer (inkjet for now. Probably an HP 2460). I want to change the data dynamically each time the printer tries to print.
Ie. at point 1, the print will be of the page kept normally, but the paper might change its position, so I am looking for a way to rotate the input image to counter the rotation of the paper.
I think I am looking for a way to specify the data to be printed pixel by pixel in real time.
Data input available :
- rotation
- position of the print head with respect to the corner of the page at each instant provided in real time
What I have so far:
I have seen one instance where a particular HP inkjet was modified to work directly off an arduino but I would like to do it directly from the computer for now for 2 reasons:
- I need to submit a proof of concept system as soon as possible
- I don't have much easy access to logic analyser/scope to reverse engineer the communication protocol (nor probably the expertise).
I am looking into PostScript
, GhostScript
but from what I understand so far, I wont be able to modify the data dynamically (Still trying to figure it out, so pardon me if I'm wrong). Would this approach work? Or do I need to look into drivers or something else?
I am aware of the restrictions of asking questions and how ill-researched questions are frowned upon. I am still trying to figure out how to get this done and have been looking into all the things that came up in my mind and I am coming across while looking through. But, so far, whatever I've seen doesn't seem to be capable of doing what I want (or I'm missing it). I'm asking this question in the hope of getting some pointers as to what to look into.
if you mean to manipulate each page, ie this page landscape next page portrait, etc then i would work on the postscript input, and not even think about the specific hardware communications.
On the other hand you want to grab the print head and manipulate things real time after printing has started then the approach will obviously depend on the specific printer.
I would try to do this at a higher level if possible. Best would be if you take control of how the postscript is being generated, then you can insert <<...>> setpagedevice
to change printer parameters.
One problem is that most printer manufacturers have stopped distributing documentation on the printer command language.
Another problems is ghostscript output devices are hopelessly out of date, like dot matrix printers. (see problem one).
For a screen printing output application, I reverse engineered the epson 1400 print command language and wrote a program to output a bitmap to the printer. Then I wrote a ghostscript printdriver based on a .bmp driver which created bitmaps and converted the bitmap to epson commands. Since you want to use an HP, this code unfortunately won't help.
Having gone down that road, I can tell you it isn't easy. Inkjet's don't allow rotation, so you'd need to rasterize the inkjet, then re-create a rotated image. Ghostscript is itself tricky to get running to a printer using gsprint and redmon, but if you already have postscript job that prints upright, then the image can be rotated and shifted with postscript commands.
I don't understand what you are trying to accomplish. Can you use a pc with a webcam to preview the orientation, then generate a bitmap and print it to the printer or do you need to wait till the paper is in position before generating the print data?
来源:https://stackoverflow.com/questions/14544978/dynamically-change-print-data