How to print a regular file to pdf from command line

Solution 1:

Here's a solution that doesn't involve OpenOffice:

  1. sudo apt-get install enscript

  2. enscript my_text_file.txt -o - | ps2pdf - output.pdf

There are more options to enscript, e.g. -B to omit the page header. See man enscript for all of the options.

Solution 2:

without installing any of the above mentioned software, one can simply do the following with already installed cupsfilter:

cupsfilter foo.txt > foo.pdf

(for options etc. please refer to cupsfilter man pages :-) )

Solution 3:

THE SIMPLE ENSCRIPT WAY

sudo apt-get install cups-pdf enscript

Then run enscript on your file with the -P switch and the printer description PDF in this case.

enscript -B -PPDF test.txt

A printer with description PDF was created when you installed cups-pdf, when you use enscript with that printer your document will be sent to the PDF printer and will be printed to file, created as .pdf in your /home/PDF directory, the command above will print the text file test.txt as a pdf in the PDF directory.

USING UNOCONV

sudo apt-get install unoconv

You can use unoconv in standalone mode, this means that in absence of an OpenOffice listener, it will start its own:

In the directory where your file is located run:

unoconv -f pdf test.txt

this will create a nice looking pdf of test.txt. in the current directory

Solution 4:

There is a command line program that can convert between all of the formats supported open/libre office called unoconv so if you need to batch convert with a script it will come in handy.

sudo apt-get install unoconv
  • Unoconv Homepage