2010-04-15 17 views
13

Necesito suministrar "Documentos de código fuente con Números de línea" que es esencialmente solo un PDF del código fuente con resaltado de sintaxis y Números de línea. ¿Hay alguna herramienta de línea de comandos para Windows que pueda invocar desde un script como script de "versión de lanzamiento de compilación"?¿Hay un convertidor de C++ a PDF de línea de comandos con resaltado de sintaxis?

Ahora mismo lo hago manualmente usando VC++, que ni siquiera es el entorno de desarrollo, el código es para un procesador TI, y un controlador de impresora PDF, que tiene una ventana emergente para cada archivo que imprimo.

+0

Estoy confundido, ¿por qué quieres imprimir toda tu fuente? –

+1

Requisito del cliente. "Documento de código fuente que incluye números de línea". Solo quiero algo para generar automáticamente los archivos. (Algo que puedo escribir.) – NoMoreZealots

+0

Parece que las respuestas no te funcionan, ¿no es así? – baol

Respuesta

22

Dos marcadores de sintaxis que uso son enscript y source-highlight.

La primera puede dar salida a PostScript (que puede convertir a PDF utilizando ps2pdf), la segunda produce resultados en HTML, LaTeX y otros formatos.

Ambos deben estar disponibles a través Cygwin

EDIT: En mi sistema con el siguiente comando imprimir todos los archivos cpp en el subárbol actual.

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

Mientras que el siguiente producirá un archivo code.pdf con el mismo contenido

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

PD: y dar la --color=1 para la salida de color y -C para los números de línea.

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

'enscript' usa el tamaño de papel predeterminado A4. Si desea usar el tamaño de letra, agregue '-M Letter' a las opciones' enscript'. –

3

Yo uso esto. Genera .ps. Entonces puedes ejecutar 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 

También podría utilizar Doxygen con exploración de fuente habilitada. También hay htmlize.el por Hrvoje Niksic para emacs.

0

Probé varias alternativas y enscript tuvo el mejor resultado para imprimir el código fuente. Por lo tanto, he escrito este script bash (necesita fiesta, enscript, ps2pdf, pdfjam) hace unos minutos para recoger todas las fuentes en el directorio actual: ejemplo

uso: ./script. sh * .h * .c

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

for f in "[email protected]" ; 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 

ADVERTENCIA: Este script es un mal corte y eliminará .ps * y OUTPUT.pdf en el directorio actual. Supone que todos los archivos de entrada están en el directorio actual.

Cuestiones relacionadas