As some of you know, I purchased an iPad some time ago, and I've been using it to read articles and papers away from the computer (which definitely makes for a nice change on week-ends).
It's also started to find its place as an online encyclopedia (thanks
Wikipanion) next to the sofa, and a YouTube client when friends are around (along with jeers from my N900 wielding housemate).
Getting Books
Plenty of locations to get those. I've been using
Project Gutenberg, because it allowed me to get some classics in French.
EPubBooks.com has a similar collection, but better formatted, if you only want the English versions.
For comics, I recommend
Tintin Revolution (in English and French), with a definitely left-leaning Tintin, out of a job and on the dole. You'll also find some very old school comics on
Golden Age Comics.
Reading books
I use
Stanza for PDFs and ePubs and
ARCReader for comics. Note that ARCReader is supposed to handle PDFs, but it failed to import any of the files I put on there.
Getting the books on the iPad
The version of the iPhone OS on the iPad is different from the one on the other devices (for now), and doesn't allow easy access to the application documents. All the documents live in the application's directory, and a new protocol is used to get and put documents within each app. This isn't working just yet within Linux, so if you don't want to use iTunes, here are a couple of work-arounds.
One way is using
ideviceinstaller. It's painful, especially for large files, but it would at least allow you to get your documents back, or on the iPad, even on a non-jailbroken device.
You would need to list the apps:
$ ideviceinstaller -l | grep -i arcreader
org.fieldman.arcreader - ARCreader 1.1
Get an archive of the application onto your computer:
$ ideviceinstaller -a org.fieldman.arcreader -o copy=./
Unpack the IPA file (it's a zip file), add your documents to the Documents subdirectory, repack as a zip file, and push the IPA file back onto the device.
YMMV, I was having some problems with archiving myself.
The second option is using the afc2 jailbroken filesystem. Once jailbroken, and with the afc2add package installed, you can mount the complete filesystem using
nautilus-ideviceinfo (right-click on the device, select Properties, then Details, and select "Browse jailbroken filesystem"). The URI is
afc://UUID:2/ if you want to mount it by hand using gvfs-mount or nautilus.
Then you can browse to
/var/mobile/Applications/Application UUID/Documents add add documents there. Note that free space stat()'ing is broken (I saw 300 megs free when I have nearly 30GB of free space), and you might break your device using the jailbroken filesystem.
The final option would only work with Stanza, we'll come back to this in a second.
Offline reading
I wanted a way to mark articles as "to read later" in my desktop web browser, and be able to read them when more at ease later on. The bare minimum, which I was using until a couple of days ago is the
Offline Pages application, a web browser that'll allow you to download full pages for later reading.
Getting the books on the iPad, part #2, Stanza
When launching Stanza, you might see a "Computers sharing books" section in the Get Books/Shared section. This will look for computers on the local network exporting a Stanza service via Zeroconf.
Calibre has an implementation, but it's a bit too heavy duty for me. I tried implementing a proof-of-concept version, and it turns out it's not too complicated, though would need more integration into the desktop.
The protocol used is HTTP, with
ODPS data. Implementing things like search and categories was not my prime concern either.
./launch-web-server.sh --remote start
Then publish it via Avahi:
avahi-publish-service "Stanza export" _stanza._tcp 12345
Right, it shows up in Stanza, and the access_log shows me it's trying to get '/'.
It copied a PDF inside the root directory of my web server, and created cover and thumbnail images for it:
evince-thumbnailer -s 512 'foo.pdf' cover.png
evince-thumbnailer -s 512 'foo.pdf' thumb.png
Finally, I create the smallest possible Atom/ODPS file to advertise my PDF file (saved as index.atom):
<?xml version="1.0" encoding="UTF-8"
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:opds="http://opds-spec.org/2010/catalog">
<entry>
<title>My PDF</title>
<link type="image/png" rel="http://opds-spec.org/cover" href="cover.png"/>
<link type="image/png" rel="http://opds-spec.org/thumbnail" href="thumb.png"/>
<link type="application/pdf"
rel="http://opds-spec.org/acquisition"
href="foo.pdf"/>
</entry>
</feed>
And redirected the index file to index.atom:
$ cat .htaccess
DirectoryIndex index.atom
Retry access from Stanza, and voila.
This should be fairly straight forward to implement in gnome-user-share, the only hard part being the metadata extraction for the PDFs, and other file types. If somebody fancies taking this on, drop me a mail, and I'll point you in the right direction.