views:

114

answers:

3

Hey, for quite a while now, I am looking for a pdf viewer for the command line.

As I like to work without X on Linux, and often work on a remote machine, I would like to have a tool to read pdfs. There are quite a lot of really good graphical programs (evince, okular, acroread, ...) to do the job, so I figured there should be at least one decent text-mode tool. But I don't even know of a crappy one!

Currently, I either start X only to read pdfs, or use pdftohtml+lynx. However, the latter does not produce a very good output, and most documents are just unreadable, especially if they contain mathematical formula.

Google is full of people saying either it's not possible or suggesting the pdftohtml version.

I realise, this is not exactly a programming question, but I am currently considering starting a project to implement such a program, unless there already is a good one out there.

Thanks for any suggestions.

A: 

This would only work if your PDF document is structured, i.e. it is a tagged PDF document.

This is required to get the correct reading-order of the text objects in the document.

Tagged PDF documents also allow your to re-flow the document though I am not aware of any tool doing that with command line output.

0xA3
A: 

Ok, you asked to know even "crappy" ones. Here are two (decide yourself about their respective crappiness):

First: Ghostscript's txtwrite output device

 gs \
   -dBATCH \
   -dNOPAUSE \
   -sDEVICE=txtwrite \
   -sOutputFile=- \
   /path/to/your/pdf

Second: XPDF's pdftotext CLI utility (better than Ghostscript):

 pdftotext \
   -f 13 \
   -l 17 \
   -layout \
   -opw supersecret \
   -upw secret \
   -eol unix \
   -nopgbrk \
   /path/to/your/pdf
   - |less

This will display the page range 13 (first page) to 17 (last page), preserve the layout of a double-password protected named PDF file (using user and owner passwords secret and supersecret), with Unix EOL convention, but without inserting pagebreaks between PDF pages, piped through less...

pdftotext -h displays all available commandline options.

Of course, both tools only work for the text parts of PDFs (if they have any). Oh, and mathematical formula also won't work too well... ;-)


Edit: I had mis-typed the command above (originally using pdftops instead of pdftotext).

pipitas
Neither of them works for my system, I tried tweaking the arguments but it did not display the text but a ps formatted file, and since I am not a printer ...
bitmask
D'oh! I mis-typed the command. Use `pdftotext` instead of `pdftops`... (I'll edit the answer to reflect this correction).
pipitas
+1  A: 

fbgs maybe could do the trick.

http://linuxers.org/howto/how-open-pdf-files-linux-console-using-fbgs-framebuffer-pdf-viewer

rjack
This is awesome! Although you have to be root, which I don't understand, but okay. Still awesome.
bitmask
Check the permissions of the framebuffer device: `$ls -l /dev/fb0 crw-rw---- 1 root video ...`. You may need to be in the `video` group in order to have user access to the framebuffer.
rjack