2010-04-15 3 views
13

Ich muss "Quellcode Dokumente w/Zeilennummern" liefern, die im Wesentlichen nur eine PDF des Quellcodes mit Syntaxhervorhebung und Zeilennummern ist. Gibt es irgendwelche Befehlszeilen-Tools für Windows, die ich aus einem Skript als "Build-Release-Version" -Skript aufrufen könnte?Gibt es eine Befehlszeile C++ zu PDF-Konverter mit Syntax-Highlighting?

Jetzt mache ich es manuell mit VC++, das ist nicht einmal die Dev-Umgebung der Code ist für einen TI-Prozessor, und ein PDF-Druckertreiber, der ein Pop-up für jede Datei, die ich drucke.

+0

Ich bin verwirrt, warum möchten Sie Ihre gesamte Quelle drucken? –

+1

Kundenanforderung. "Quellcodedokument einschließlich Zeilennummern." Ich möchte nur etwas, um die Dateien automatisch zu generieren. (Etwas, das ich skripten kann.) – NoMoreZealots

+0

Scheint so, als würden die Antworten nicht für dich funktionieren, oder? – baol

Antwort

22

Zwei Syntax-Textmarker, die ich verwende, sind enscript und source-highlight.

Die erste kann nach PostScript ausgeben (die Sie mit ps2pdf in PDF konvertieren können), die zweite Ausgabe in HTML, LaTeX und anderen Formaten. Auf meinem System den folgenden Befehl druckt alle CPP-Dateien im aktuellen Teilbaum:

Beide sollten über Cygwin

EDIT zur Verfügung.

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

Während die folgende eine code.pdf Datei mit dem gleichen Inhalt

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

PS produzieren wird: und geben die --color=1 für Farbausgabe und -C für Zeilennummern.

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

'enscript' verwendet das Standardmedienformat A4. Wenn Sie die Buchstabengröße verwenden möchten, fügen Sie 'M Brief 'zu den' enscript 'Optionen hinzu. –

3

Ich benutze dies. Es erzeugt .ps. Dann können Sie ps2pdf ausführen.

# 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 

Sie können auch Doxygen mit aktiviertem Quellbrowser verwenden. Es gibt auch htmlize.el von Hrvoje Niksic für Emacs.

0

Ich testete mehrere Alternativen und enscript hatte das beste Ergebnis, um den Quellcode zu drucken. Also, ich schrieb diesen Bash-Skript (muss bash, enscript, ps2pdf, pdfjam) vor ein paar Minuten alle Quellen im aktuellen Verzeichnis zu sammeln:

Verwendungsbeispiel: ./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 

ACHTUNG: Dieses Skript ein schlechter Hack und wird * .ps und Ausgabe.pdf im aktuellen Verzeichnis löschen. Es wird davon ausgegangen, dass sich alle Eingabedateien im aktuellen Verzeichnis befinden.