是否有一个带语法高亮的命令行C ++到PDF转换器?

时间:2010-04-15 22:16:41

标签: c++ pdf documentation syntax-highlighting

我需要提供“具有行号的源代码文档”,它基本上只是源代码的PDF,带有语法高亮和行号。是否有任何现有的Windows命令行工具,我可以从脚本调用“构建版本”脚本?

现在我正在使用VC ++进行手动操作,VC ++甚至不是代码用于TI处理器的开发环境,也是PDF打印机驱动程序,它会弹出我打印的每个文件。

3 个答案:

答案 0 :(得分:25)

我使用的两种语法荧光笔是enscriptsource-highlight

第一个可以输出到PostScript(可以使用ps2pdf转换为PDF),第二个可以输出HTML,LaTeX和其他格式的输出。

两者都应该通过Cygwin

提供

编辑:在我的系统上,以下命令将打印当前子树中的所有cpp文件。

find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 

以下内容将生成具有相同内容的code.pdf文件

find . -name "*.cpp" | xargs enscript -Ecpp -fCourier8 -o - | ps2pdf - code.pdf

PS:并为{0}提供颜色输出,为行号提供--color=1

-C

答案 1 :(得分:3)

我用这个。它会生成.ps。然后你可以运行ps2pdf。

# 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

您也可以在启用源浏览时使用Doxygen。 还有Hrvoje Niksic的htmlize.el用于emacs。

答案 2 :(得分:0)

我测试了几种替代方案, enscript 打印源代码效果最好。 所以,几分钟前我写了这个bash脚本(需要 bash enscript ps2pdf pdfjam )收集当前目录中的所有来源:

用法示例:./ script.sh * .h * .c

#!/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

警告:此脚本是一个糟糕的黑客,将删除当前目录中的* .ps和OUTPUT.pdf。 它假定所有输入文件都在当前目录中。