I'm comfortable coding in PostScript, which is a stack-based language for printing on which PDF is based. I'd sure like to be able to generate my PostScript code as a string and then send it to a printer from inside my iPad app.
But is there a way to do so?
I'm not an iOS developer, and haven't look at AirPrint at all, so this might be a naive comment. Could you just open up port 9100 and fire the data directly at the IP address of the printer?
There ought to be a way to convert PS to PDF by slapping on a header, assuming the PS is simple enough.
Once the file is a PDF, you should be able to convey it to iBooks.
Related
I'm trying to test code that sends a printing message to an iMZ320 printer. The printer takes instructions in the CPCL programming language. I don't have access to a printer I can print to, but I need to check some changes I have made to the printer code are formatting correctly. Is there any way to do that to test the code is displaying correctly?
Unfortunately the answer is no. Without access to the printer you cannot preview the changes. Online tools like Labelary are only compatible with ZPL. In practice, I find that even when I'm generating code from a WYSIWYG tool like Zdesigner, I always need to test and fine tune on an actual printer.
What i want is
Design a label layout(barcode on it).
Scan the information by handheld and print the label directly from mobile printer linked with bluetooth.
want to know:
best way to implement this? see my preferences list below
1) free of charge
2) the API should have 2D barcode support
3) label layout can be designed by Drag-and-drop. The best is a visual studio control. so we do not need too much coding.
Hope someone has experience can share some to me, what cotrol? what liberary? Must use zebra specific printing language?
Kindly show a technique chain of the best(easy, free). Thank you all.
You should try and go with the Zebra SDK (for windows ce too). I assume there is no drag and drop GUI designer tool. But you may examine the code generated by a label designer application printing to a zebra printer using file: as output port.
Zebra provides good SDKs, samples and support. For example to print a QR code:
^XA^FO100,100^BQN,2,10^FDYourTextHere^FS^XZ
You see, it is more or less readable where to replace text to get another QR barcode.
see also https://km.zebra.com/kb/index?page=content&channel=SAMPLE_CODE
You may need to study the ZPL programmers guide and then you can start to print your own mind-designed labels. Printing meeans to send ZPL code lines directly to the printer.
My first application I have developed in RoR is for some Kiosk Touchscreen PCs used in our stock. When the stock worker picked up some material he enters the quantity in a Form.
Now I want to print a label containing: customer name, material description, quantity, and a barcode on our Zebra printer.
How would I do that from a Ruby on Rails Application ?
Sending directly the control chars needed for ZPL (Zebra Printer Language) from the controller ? ( not very comfortable )
Create a view in HTML send it to the client, and the client has to print it. ( not very confortable and error prone, as the stock worker has to do additional steps, may choose the wrong printer or maybe don't print the label at all )
Create a pdf document from the controller and send it to the printer from the server ( oh, no the printer does not understand pdf, so I have to control a pdf reader to do the printing ?? That wouldn't be very fast as it will send the label as a graphic image to the printer
Create a gem which will hide all the logic needed for printing ? ( Are there any gems which already do this ? )
I would appreciate every comment.
Thanks
Klaus
I would send the raw ZPL to the printer. You can use a tool like Bartender (I would suggest installing Bartender Only from that link. You can basically design your label in this tool. After you've designed your label you would download the bartender printer drivers for your zebra printer and set up a dummy printer with these drivers and print this label you designed to a file. This will give you the raw zpl. From this you can basically substitute all the dynamic data into the zpl file you printed in the previous step and send this directly to the printer via serial, tcp/ip or usb.
Edit: I found a much better solution as I continued to dig on this. This is pretty significantly edited down to focus on the Java applet solution I ended up using.
Basically, you will generate the label as raw ZPL text. You then need to get that plain text to the printer, which will generate the label.
If your server can access the printer's IP address, you can copy the ZPL to the printer directly from the server process. If it's a remote web app, you need to get the client to send the ZPL for you. Browser sandboxing makes this hard to pull off - drivers want to helpfully get in the way. There are a few options; the most common is to use a small Java or Flash applet to do the actual copying. If you can get the specific web browser your users are using to print to a plain text printer without adding anything, you could use local printing, but generally the most robust approach is to use a helper Java applet.
The Java applet I use for this is jZebra: http://code.google.com/p/jzebra/
It's a very clean & straightforward approach, look at the sample HTML in the download package and a few lines of code print the label. I just edited down the sample and am planning to use it as my production code popup.. it's really that straightforward.
Two caveats with this approach:
Your users must have the JRE installed
jZebra finds the Zebra printer by printer name. There are very specific guides (they have detailed instructions for Mac, Windows, and Linux setup) for what you need to do - but it's well documented and you just have to have your users follow the instructions. Once it's set up correctly it works great.
More simple solution, and I believe better as well, Usually most of browser and machines has PDF viewer installed. So just create labels as PDF documents and sent it to browser.
We have implemented label printing using Zebra printer in ROR following way.
Create exact format label pages in html.
Convert the html to pdf using wickedPDF.
Usually labels contains barcodes as well.
So overall solution would be,
Create barcodes using barbie gem.
Create html using barcodes and your actuall data that needs to go on label.
Convert html view to PDF.
Sounds like a job for a ruby C extension. Perhaps one that also wraps something like gnu barcode http://www.gnu.org/software/barcode/ library and some other open standard for the zebra printer, if one exists? I once did a rails app that made coupons and made heavy use of gnu barcode, but I did simple shell command to interface to it.
I have a piece of equipment from the late 1980s. It outputs text and graphics directly to dot matrix and Laserjet III printers. These are starting to be harder to find. I would like to implement a solution which allows me to connect to the computer and "print" to it (a piece of software) then print it to a modern printer or .pdf file. I can't locate the piece of software that would accept the input of the device and emulate an old printer. Any solutions??? Thanks for any help. I know this isn't exactly what most of you do, but I'm hoping someone has had need of something similar in their experience.
It already exists. It's called PrintCapture and sells for US$97.00. You will need the necessary interface hardware as well, depending on which type of printer port the device has; they list some of those devices on their web site under the "Details" section.
We are making a lab instrument using an ARM9/RTOS system. The client has asked about printing simple reports from the ARM9 system. In this case, we have USB Host support in the RTOS. I'm thinking about printing bitmaps in generic PCL, hoping that will cover the widest range of printers. Is there a better way to approach this? I'm assuming the RTOS does not have printer drivers, and I don't want to support a lot of printers.
We also support USB device mode on our system, so you could plug in a photo printer, and our device would appear to be a USB stick. So that would work, but it's a bit clunky. This will be a C/C++ embedded system
Pretending to be a digital camera and interfacing with a PictBridge printer actually sounds pretty clever. It would remove the need to deal with different printer drivers, and if my understanding of the technology is correct, you could even control the operation of the printer right from your device.
On the other hand, as someone who has used a fair number of computerized lab instruments (oscilloscopes etc.) I find the ability to save screenshots from an ethernet/web interface to be much more useful. Print is dead.
Have you looked at what all the scope vendors are doing? They all have print options (I think) and I don't know what they are doing to solve this problem.
Last time I was involved with something like this, we used serial ports to talk to HP printers using PCL. That backfired as everyone quickly stopped making serial printers!
PostScript is natively supported by most printers, so you could just send it over the wire, but it would be a lot more cumbersome than straight ASCII. There are libraries, but they're bulky.
Since your device can appear to be a USB stick, a simple solution would be to generate a report as a JPEG image and then have the printer open and print it. This way, the people who want paperless output can use the image as-is, and everyone else can print it.
If I understand you correctly, you could write a formatted text file and do a "print" command through Windows in the "usb stick" mode.
For a simple report, it would be best to stick to straight ASCII. If you need some graphics, PCL would be a good choice for B/W laser printers, but I'm not sure how universal it would be for the more common ink-jet printers.
Edit: the PCL Reference Manual is available as a PDF from HP.