Rectangle 27 0

Is there a command line C++ to PDF converter with syntax highlighting?


enscript
find . -name "*.cpp" | xargs enscript --color=1 -C -Ecpp -fCourier8 -o - | ps2pdf - code.pdf
find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8
source-highlight

Sign up for our newsletter and get our top new questions delivered to your inbox (see an example).

EDIT: On my system the following command will print all the cpp files in the current subtree.

PS: and give the --color=1 for color output and -C for line numbers.

The first can output to PostScript (that you can convert to PDF using ps2pdf), the second produces output in HTML, LaTeX and other formats.

While the following will produce a code.pdf file with the same content

enscript uses default media size A4. If you want to use letter size, add -M Letter to the enscript options.

Note
Rectangle 27 0

Is there a command line C++ to PDF converter with syntax highlighting?


# Copyright 2004 Rutger E.W. van Beusekom.
# Distributed under the Boost Software License, Version 1.0. (See
# accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

outfile=$1
shift

a2ps -1 --highlight=normal --pretty-print=cxx --line-numbers=1 -M a4 -L80 -g \
-o $outfile $* --prologue=color --right-title=%p. --left-title \
--left-footer --right-footer --header --medium=a4

I use this. It generates .ps. Then you can run ps2pdf.

You could also use Doxygen with source browsing enabled. There is also htmlize.el by Hrvoje Niksic for emacs.

Note
Rectangle 27 0

Is there a command line C++ to PDF converter with syntax highlighting?


#!/bin/bash
test "x$1" == "x" && echo "usage: $0 <sourcefiles>" && exit 0

for f in "$@" ; do enscript $f -o $f.ps -E -C ; done

for f in *.ps ; do echo ps2pdf $f ; ps2pdf $f && rm $f ; done

rm OUTPUT.pdf 2>/dev/null
pdfjam *.pdf && mv *pdfjam.pdf OUTPUT.pdf

echo
echo DONE:
echo OUTPUT.pdf

I tested several alternatives and enscript had the best result to print the source code. So, I wrote this bash script (needs bash, enscript, ps2pdf, pdfjam) a few minutes ago to collect all sources in the current directory:

WARNING: This script is a bad hack and will delete *.ps and OUTPUT.pdf in the current directory. It assumes all input files are in the current directory.

Note