I want my iPad app to be able to print. Help!
July 12, 2010 12:16 PM   Subscribe

How do I add print functionality to my iPhone/iPad app? Can I license this ability or do I have to create it? What is the most cost-effective way for my app to be able to print to a wireless printer or a networked printer?

I'm about to create an iPhone app where the ability to print to a networked printer (either through wifi or through one connected to a local computer) is essential. I'm not personally coding it; I'm outsourcing it to a company.

How can I add this functionality in the cheapest/most cost-efficient way possible? Do I have to license the capability? If so, from who and for how much? And will it be kosher with Apple's "no private APIs" policy?

I know there's lots of apps out there that are capable of doing it. Ideally, I want to be able to print to a wifi-enabled printer and a printer connected to a local computer. The more flexibility, the better.

Any pointers and suggestions would be greatly appreciated.
posted by smersh to Computers & Internet (14 answers total) 1 user marked this as a favorite
 
Implement Google Cloud Print when it's finished?
posted by GuyZero at 12:30 PM on July 12, 2010


I'm skeptical that Apple will even allow Google Cloud Print when it is released. Doesn't seem like their style. As far as I can tell, printing from iOS is currently impossible. There are some printers that automatically print inbound email attachments, so you can send a document over the web to one, and print that way. Of course, this is far from universal, and is really more of a solution for end-users than developers. I'm afraid you may be out of luck for the time being.
posted by The Winsome Parker Lewis at 12:40 PM on July 12, 2010


Best answer: You might explore porting CUPS and associated drivers over to the device. If you have a computer set up as a print server you could probably then send jobs over.

I suspect CUPS is behind Air Sharing and other apps if only because it is open source and the license agreement appears to allow redistribution of a shared static library with an iPhone app.

I'd be surprised if something like this facility wouldn't one day end up in the SDK, perhaps iOS 5. But for now, developers have to roll their own.
posted by Blazecock Pileon at 12:46 PM on July 12, 2010


HP Printer's Eprint system will print from the Ipad.
posted by Lord_Pall at 12:47 PM on July 12, 2010


As far as I can tell, printing from iOS is currently impossible.

Not impossible. There are a few apps here and there that facilitate printing.
posted by Blazecock Pileon at 12:49 PM on July 12, 2010


My mistake! I even have Air Sharing but I was unaware of its print feature... I guess that would be a good direction to explore.
posted by The Winsome Parker Lewis at 12:55 PM on July 12, 2010


Best answer: CUPS is based on IPP which is just opening a socket to a specific IP address so it should be possible. I don't think there's much support for rendering in iOS although I've never looked much so that may be the hard part to figure out. With IPP you still have to submit the job to the printer in a format the printer understands.
posted by GuyZero at 1:01 PM on July 12, 2010


Response by poster: Blazecock Pileon, not having reads the CUPS license, is it free to include? Or do I have to pay to use it? I'm looking to minimize costs as much as possible.

Steve Jobs once responded to someone's email that printing from an iPad is coming, but I don't know when!
posted by smersh at 1:03 PM on July 12, 2010


Response by poster: GuyZero: "CUPS is based on IPP"

Does this mean that it's not using any private APIs? Just want to make certain that I don't run into any App Store approval problems.
posted by smersh at 1:07 PM on July 12, 2010


Best answer: Blazecock Pileon, not having reads the CUPS license, is it free to include? Or do I have to pay to use it? I'm looking to minimize costs as much as possible.

It is open source -- free to include -- and the Apple-specific terms of the license indicate that you can include it in an iPhone project without redistributing source:

-----------------------

Apple Operating System Development License Exception;

1. Software that is developed by any person or entity for an Apple Operating System ("Apple OS-Developed Software"), including but not limited to Apple and third party printer drivers, filters, and backends for an Apple Operating System, that is linked to the CUPS imaging library or based on any sample filters or backends provided with CUPS shall not be considered to be a derivative work or collective work based on the CUPS program and is exempt from the mandatory source code release clauses of the GNU GPL. You may therefore distribute linked combinations of the CUPS imaging library with Apple OS-Developed Software without releasing the source code of the Apple OS-Developed Software. You may also use sample filters and backends provided with CUPS to develop Apple OS-Developed Software without releasing the source code of the Apple OS-Developed Software. (emph. added)

2. An Apple Operating System means any operating system software developed and/or marketed by Apple Computer, Inc., including but not limited to all existing releases and versions of Apple's Darwin, Mac OS X, and Mac OS X Server products and all follow-on releases and future versions thereof.

3. This exception is only available for Apple OS-Developed Software and does not apply to software that is distributed for use on other operating systems.

4. All CUPS software that falls under this license exception have the following text at the top of each source file:

This file is subject to the Apple OS-Developed Software exception.

-----------------------

You'll want to run this past your lawyers, of course, but a straightforward reading says you can build it and include it with your iPhone/iPad app, without having to redistribute any source code for your app (which make use of the CUPS system), because you are developing the printing system of your app for iOS and iPhone/iPad exclusively.

Now, you'd have to pay your developers whatever hours are required to port this over for iOS and integrate it into your app, but the code itself appears to be free and you can redistribute this for free (by all appearances, so read the license carefully).
posted by Blazecock Pileon at 1:15 PM on July 12, 2010


By the way, if you do build a printing library, I might be interested in licensing it for an app I'm writing, so please follow up if you do get something put together.
posted by Blazecock Pileon at 1:20 PM on July 12, 2010


CUPS is an implementation of IPP. All I'm saying is you could implement IPP directly which is probably more work, but could be less if you only need really specific parts of it.
posted by GuyZero at 2:02 PM on July 12, 2010


Sorry, to be more clear, IPP is an open spec for printing over HTTP. Neither CUPS nor IPP have any direct relationship to iOS's internal APIs.
posted by GuyZero at 2:03 PM on July 12, 2010


Response by poster: Blazecock Pileon: "By the way, if you do build a printing library, I might be interested in licensing it for an app I'm writing, so please follow up if you do get something put together."

I will keep you posted. Likely September or October at the early end.

I appreciate everyone's help. Thanks again.
posted by smersh at 2:07 PM on July 12, 2010


« Older Electronic toymaker for hire?   |   Help Us Find a Good Place to Live Newer »
This thread is closed to new comments.